from catma.catmaConfig import *
from catma.axiom import String, Enumerate
from catma import stims
from extraCatmaConfig import *
from dustContent import PopulateContent2
from dustEnums import PopulateEnums

class Name(String):
    ue3Type = 'name'


class ContentReference(String):

    def GetAdditionalAttFlag(self):
        return ATTRIB_FLAGS.CONTENT_REF




def PopulateUE3Basics(ax2):
    ax2.CreateType('Name', Name)
    ax2.CreateType('ContentReference', ContentReference)



def PopulateGeneric(ax2):
    typeDef = ax2.CreateType('DamageProtection', standalone=False, group=GROUPS.Combat, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float hardProtection = 0', caption='Hard Protection', range=(0, 1))
    typeDef.AddMember('Float softProtection = 0', caption='Soft Protection', range=(0, 1))
    typeDef = ax2.CreateType('DustVisionProperties', standalone=False, group=GROUPS.Combat, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float m_fViewAngle = 45', caption='View Angle (Degrees)')
    typeDef.AddMember('Float m_fViewDistance = 10000', caption='Max View Distance (Unreal Units)')
    typeDef.AddMember('Bool m_bMustHaveLOS = True', caption='Must have a LOS')
    typeDef.AddMember('Float m_fMccBias = 0', caption='MCC target bias')
    typeDef.AddMember('Float m_fMccViewDistance = 30000', caption='Mcc View Distance (Unreal Units)')
    typeDef.AddMember('Float m_fOnFootBias = 0', caption='On Foot target Bias')
    typeDef.AddMember('Float m_fOnFootViewDistance = 7500', caption='On Foot View Distance (Unreal Units)')
    typeDef.AddMember('Float m_fGroundVehicleBias = 0', caption='Ground Vehicle Bias')
    typeDef.AddMember('Float m_fGroundVehicleViewDistance = 15000', caption='Ground Vehicle View Distance (Unreal Units)')
    typeDef.AddMember('Float m_fFlyingVehicleBias = 0', caption='Flying Vehicle Bias')
    typeDef.AddMember('Float m_fFlyingVehicleViewDistance = 15000', caption='Flying Vehicle View Distance (Unreal Units)')
    typeDef.AddMember('Float m_fOrderedBias = 10', caption='Ordered Target Bias')
    typeDef.AddMember('Float m_fCurrentTargetBias = 5', caption='Current Target Bias (keep current target)')
    typeDef.AddMember('Float m_fCurrentTargetScoreReduction = 0', caption='Target Score Reduction Over Time (Target Cycling)')
    typeDef.AddMember('Float m_fDistanceCost = .001', caption='Distance Score (Negative per unreal unit)')
    typeDef.AddMember('Float m_fAimingAtCost = 1', caption='Target aiming Bias')
    typeDef.AddMember('Float m_fShotAtCost = 1', caption='Target shooting Bias')
    typeDef.AddMember('Float m_fTimeTillForget = 5', caption='How long till we forget the target if unseen')
    typeDef.AddMember('Float m_fHiddenBias = 1', caption='Target hiding (Unseen) bias')
    typeDef.AddMember('Float m_fVisibleBias = 5', caption='Target is visible bias')
    typeDef = ax2.CreateType('FighterRotatioParam', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Bool limitMaxRotation', caption='Limit Max Rotation')
    typeDef.AddMember('Bool limitMinRotation', caption='Limit Min Rotation')
    typeDef.AddMember('Float maxRotation', caption='Max Rotation')
    typeDef.AddMember('Float minRotation', caption='Min Rotation')
    typeDef.AddMember('Float maxRotationSpeed', caption='Max Rotation Speed')
    typeDef.AddMember('Float rotationAccelation', caption='Rotation Acceleration')
    typeDef.AddMember('Float rotationDeaccelation', caption='Rotation Deceleration')
    typeDef.AddMember('Float currRotationSpeed', caption='Current Rotation Speed')
    typeDef.AddMember('Float maxRotationPeakSpeedDegree', text="at which degree the rotation speed reaches the max when it's rotating towards to the max degree", caption='Max Rotation Peak Speed Degree')
    typeDef.AddMember('Float minRotationPeakSpeedDegree', text="at which degree the rotation speed reaches the max when it's rotating towards to the min degree", caption='Min Rotation Peak Speed Degree')
    typeDef.AddMember('Bool needsDecellaration', caption='Needs Deceleration')
    typeDef.AddMember('Float vehicleInput', caption='Vehicle Input')
    typeDef = ax2.CreateType('FighterRotatioParamSet', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('FighterRotatioParam rotationParamSet', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef = ax2.CreateType('SmoothControlParam', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Bool limitMaxValue', caption='Limit Max Value')
    typeDef.AddMember('Bool limitMinValue', caption='Limit Min Value')
    typeDef.AddMember('Float maxValue', caption='Max Value')
    typeDef.AddMember('Float minValue', caption='Min Value')
    typeDef.AddMember('Bool autoKeepBlance', caption='Auto Keep Balance')
    typeDef.AddMember('Float blanceValue', caption='Balance Value')
    typeDef.AddMember('Float targetVar', caption='TargetVar')
    typeDef.AddMember('Float currentValue', caption='Current Value')
    typeDef.AddMember('Float currentVelocity', caption='Current Velocity')
    typeDef.AddMember('Float accelerate', caption='Accelerate')
    typeDef.AddMember('Float decelerate', caption='Decelerate')
    typeDef.AddMember('Float controlSpeed', caption='Control Speed')
    typeDef.AddMember('Float preValue', caption='Prevalue')
    typeDef.AddMember('Float senseFromController', caption='Sense From Controller')
    typeDef = ax2.CreateType('Vector', standalone=False, forUE3=False)
    typeDef.AddMember('Float x')
    typeDef.AddMember('Float y')
    typeDef.AddMember('Float z')
    typeDef = ax2.CreateType('Rotator', standalone=False, forUE3=False)
    typeDef.AddMember('Int Pitch')
    typeDef.AddMember('Int Yaw')
    typeDef.AddMember('Int Roll')
    typeDef = ax2.CreateType('Color', standalone=False, forUE3=False)
    typeDef.AddMember('Int R')
    typeDef.AddMember('Int G')
    typeDef.AddMember('Int B')
    typeDef = ax2.CreateType('LinearColor', standalone=False, forUE3=False)
    typeDef.AddMember('Float R')
    typeDef.AddMember('Float G')
    typeDef.AddMember('Float B')
    typeDef.AddMember('Float A')
    typeDef = ax2.CreateType('Object', standalone=False, forUE3=False)
    typeDef = ax2.CreateType('Actor', standalone=False, forUE3=False)
    typeDef = ax2.CreateType('nceTurret', standalone=False, forUE3=False)
    typeDef = ax2.CreateType('EInterpCurveMode', Enumerate, forUE3=False)
    typeDef.AddElement('CIM_Linear')
    typeDef.AddElement('CIM_CurveAuto')
    typeDef.AddElement('CIM_Constant')
    typeDef.AddElement('CIM_CurveUser')
    typeDef.AddElement('CIM_CurveBreak')
    typeDef.AddElement('CIM_CurveAutoClamped')
    typeDef = ax2.CreateType('InterpCurvePointFloat', standalone=False, forUE3=False)
    typeDef.AddMember('Float InVal')
    typeDef.AddMember('Float OutVal')
    typeDef = ax2.CreateType('InterpCurveFloat', standalone=False, forUE3=False)
    typeDef.AddMember('InterpCurvePointFloat Points', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef.AddMember('EInterpCurveMode InterpMethod')
    typeDef = ax2.CreateType('EWheelSide', Enumerate, forUE3=False)
    typeDef.AddElement('SIDE_None')
    typeDef.AddElement('SIDE_Left')
    typeDef.AddElement('SIDE_Right')
    typeDef = ax2.CreateType('DustWheelProperties', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Name m_BoneName', caption='Bone Name')
    typeDef.AddMember('Vector m_vBoneOffset', caption='Bone Offset')
    typeDef.AddMember('Float m_fWheelRadius = 35.0', caption='Wheel Radius')
    typeDef.AddMember('Float m_fSuspensionTravel = 60.0', caption='Suspension Travel')
    typeDef.AddMember('Float m_fSteerFactor = 1.0', caption='Steer Factor')
    typeDef.AddMember('Float m_fLongSlipFactor = 1.0', caption='Long Slip Factor')
    typeDef.AddMember('Float m_fLatSlipFactor = 1.0', caption='Lat Slip Factor')
    typeDef.AddMember('Float m_fHandbrakeLongSlipFactor = 1.0', caption='Handbrake Long Slip Factor')
    typeDef.AddMember('Float m_fHandbrakeLatSlipFactor = 1.0', caption='Handbrake Lat Slip Factor')
    typeDef.AddMember('Float m_fSuspensionSpeed = 100.0', caption='Suspension Speed')
    typeDef.AddMember('Name m_SkelControlName', caption='Skel Control Name')
    typeDef.AddMember('EWheelSide m_eSide = SIDE_None', caption='Wheel Side')
    typeDef.AddMember('Bool m_bPoweredWheel = True', caption='Powered Wheel')
    typeDef.AddMember('Float m_fParkedSlipFactor = 1.0', caption='Parked Slip Factor')
    typeDef.AddMember('Bool m_HandbrakeLockWheel = False', caption='HandbrakeLockWheel')
    typeDef.AddMember('Bool m_bHoverWheel = False', caption='Hover Wheel')
    typeDef = ax2.CreateType('VehicleUprightConstraints', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Bool bStayUpright = True', caption='bStayUpright')
    typeDef.AddMember('Float StayUprightRollResistAngle = 5.0', caption='StayUprightRollResistAngle')
    typeDef.AddMember('Float StayUprightPitchResistAngle = 5.0', caption='StayUprightPitchResistAngle')
    typeDef.AddMember('Float StayUprightStiffness = 1000.0', caption='StayUprightStiffness')
    typeDef.AddMember('Float StayUprightDamping = 1000.0', caption='StayUprightDamping')
    typeDef = ax2.CreateType('VehiclePhysicalMaterials', standalone=False, forUE3=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('ContentReference m_pDrivingPhysicalMaterial', caption='m_pDrivingPhysicalMaterial')
    typeDef.AddMember('ContentReference m_pDefaultPhysicalMaterial', caption='m_pDefaultPhysicalMaterial')
    typeDef = ax2.CreateType('WeaponDamage', standalone=False, group=GROUPS.Combat, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float hardDamage', caption='Hard Damage')
    typeDef.AddMember('Float softDamage', caption='Soft Damage')
    typeDef = ax2.CreateType('WeaponAimTargetQuad', standalone=False, group=GROUPS.Combat)
    typeDef.AddMember('Float widthScaleStart = 1.2', text='scaled width, the aim assist function (friction or adhesion) starts to take effects when reticule enters this area')
    typeDef.AddMember('Float widthScaleMax = 0.8', text='scaled width, the aim assist function (friction or adhesion) reaches the maximum effects when reticule enters this area')
    typeDef.AddMember('Float heightScaleStart = 1.2', text='scaled height, the aim assist function (friction or adhesion) starts to take effects when reticule enters this area')
    typeDef.AddMember('Float heightScaleMax = 0.8', text='scaled height, the aim assist function (friction or adhesion) reaches the maximum effects when reticule enters this area')
    typeDef = ax2.CreateType('WeaponAimFriction', standalone=False, group=GROUPS.Combat)
    typeDef.AddMember('Float maxRange = 5000', modifyFlag=MODIFY_REMOVED, text='the maximum range that the aim-friction is activated (in unreal length unit)')
    typeDef.AddMember('Float minRange = 300', modifyFlag=MODIFY_REMOVED, text='the minimum range that the aim-friction is activated (in unreal length unit)')
    typeDef.AddMember('Float playerYawSpeedScale = 0.5', text="it scales the player yaw rotating speed, also affected by the frictional factor (which is interpolated from the current position between 'Start' and 'Max')")
    typeDef.AddMember('Float playerPitchSpeedScale = 0.5', text="it scales the player pitch rotating speed, also affected by the frictional factor (which is interpolated from the current position between 'Start' and 'Max')")
    typeDef.AddMember('Float targetWidthScaleStart = 1.2', modifyFlag=MODIFY_REMOVED, text='it scales the target width, the aim-friction starts to take effects when reticule enters this area')
    typeDef.AddMember('Float targetWidthScaleMax = 0.8', modifyFlag=MODIFY_REMOVED, text='it scales the target width, the aim-friction reaches the maximum effects when reticule enters this area')
    typeDef.AddMember('Float targetHeightScaleStart = 1.2', modifyFlag=MODIFY_REMOVED, text='it scales the target height, the aim-friction starts to take effects when reticule enters this area')
    typeDef.AddMember('Float targetHeightScaleMax = 0.8', modifyFlag=MODIFY_REMOVED, text='it scales the target height, the aim-friction reaches the maximum effects when reticule enters this area')
    typeDef.AddMember('Bool enable = True', text='If the aim-friction is enabled')
    typeDef.AddMember('Float activeRangeMax = 5000', text='the maximum range that the friction is activated (in unreal length unit)')
    typeDef.AddMember('Float activeRangeMin = 300', text='the minimum range that the friction is activated (in unreal length unit)')
    typeDef.AddMember('WeaponAimTargetQuad targetQuad', text='it defines two nested scaled quads(width & height) of the target')
    typeDef = ax2.CreateType('WeaponAimAdhesion', standalone=False, group=GROUPS.Combat)
    typeDef.AddMember('Bool enable = True', text='If the aim-adhesion is enabled')
    typeDef.AddMember('Float activeRangeMax = 5000', text='the maximum range that the adhesion is activated (in unreal length unit)')
    typeDef.AddMember('Float activeRangeMin = 300', text='the minimum range that the adhesion is activated (in unreal length unit)')
    typeDef.AddMember('Float maxFollowingRateYaw = 30', text='the maximum angular velocity (degrees per second) that the Aim Adhesion will give you')
    typeDef.AddMember('Float maxFollowingRatePitch = 30', text='the maximum angular velocity (degrees per second) that the Aim Adhesion will give you')
    typeDef.AddMember('Float adhesivePercentageYaw = 1.0', text='the percentage of the adhesive capacity, that the Aim Adhesion will replicate for you when the target is moving.')
    typeDef.AddMember('Float adhesivePercentagePitch = 1.0', text='the percentage of the adhesive capacity, that the Aim Adhesion will replicate for you when the target is moving.')
    typeDef.AddMember('WeaponAimTargetQuad targetQuad', text='it defines two nested scaled quads(width & height) of the target')
    typeDef = ax2.CreateType('WeaponCameraRotationScale', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float scaleZoomed = 0.6', text='the camera rotation scale when the weapon is zoomed')
    typeDef.AddMember('Float scaleNotZoomed = 1.0', text='the camera rotation scale when the weapon is not zoomed')
    typeDef = ax2.CreateType('WeaponDispersion', standalone=False, group=GROUPS.Combat)
    typeDef.AddMember('Float minDispersion = 0', caption='Min Dispersion', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float maxDispersionStand = 0', caption='Max Dispersion (Stand)', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float maxDispersionCrouch = 0', caption='Max Dispersion (Crouch)', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float maxDispersionProne = 0', caption='Max Dispersion (Prone)', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float increasePerShotStand = 0', caption='Dispersion Increase Per Shot (Stand)', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float increasePerShotCrouch = 0', caption='Dispersion Increase Per Shot (Crouch)', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float increasePerShotProne = 0', caption='Dispersion Increase Per Shot (Prone)', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float decreasePerSec = 400', caption='Decrease Per Sec', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float dispersionVelocityStaticThreshold = 0', caption='Dispersion Velocity Static Threshold', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float dispersionVelocityMovingThreshold = 0', caption='Dispersion Velocity Moving Threshold', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float dispersionTurnSpeedStaticThreshold = 0', caption='Dispersion TurnSpeed Static Threshold', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float dispersionTurnSpeedMovingThreshold = 0', caption='Dispersion TurnSpeed Moving Threshold', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float maxAngleInDegrees = 3.0', caption='default maximum dispersion angle (in degrees)')
    typeDef.AddMember('Float step = 0.2', caption='Step Percentage Per Shot - (0 - 1.0)')
    typeDef.AddMember('Float lowerBound = 0.0', caption='The minimum dispersion factor (0 - 1.0)')
    typeDef.AddMember('Float timeCostFromMaxToMin = 0.5', caption='total time cost when the dispersion falls from max to min (in seconds)')
    typeDef.AddMember('Float moveTurnPenalty = 0.3', caption='Dispersion panetaly factor when player is moving or turning- (0 - 1.0)')
    typeDef.AddMember('Float movePenaltyLowerBound = 200', caption='Velocity lower bound of Moving Penalty Calculation (in Unreal unit)')
    typeDef.AddMember('Float movePenaltyUpperBound = 500', caption='Velocity upper bound of Moving Penalty Calculation (in Unreal unit)')
    typeDef.AddMember('Float turnPenaltyLowerBound = 5000', caption='Lower bound of Turing Penalty Calculation (in Unreal rotator unit)')
    typeDef.AddMember('Float turnPenaltyUpperBound = 25000', caption='Upper bound of Turing Penalty Calculation (in Unreal rotator unit)')
    typeDef.AddMember('Float crouchFactor = 0.8', caption='Crouch Factor (0 - 1.0)')
    typeDef.AddMember('Float proneFactor = 0.5', caption='Prone Factor (0 - 1.0)')
    typeDef = ax2.CreateType('WeaponCrosshair', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float crosshairExpansionIncrement = 0', caption='Crosshair Expansion Increment', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairExpansionSpeed = 0', caption='Crosshair Expansion Speed', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairContractionSpeed = 0', caption='Crosshair Contraction Speed', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairMaxSpeedSize = 0', caption='Crosshair Max Speed Size', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairMaxShotSize = 0', caption='Crosshair Max Shot Size', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairVelocityFactor = 0', caption='Velocity Factor', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairTurnSpeedFactor = 0', caption='Crosshair Turn Speed Factor', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairRecoilFactor = 0', caption='Crosshair Recoil Factor', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float crosshairMinSize = 0', caption='Min Crosshair Size (ratio to the vertical screen size)')
    typeDef.AddMember('Float crosshairMaxSize = 0', caption='Max Crosshair Size (ratio to the vertical screen size)')
    typeDef = ax2.CreateType('WeaponRecoil', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float recoilAscentSpeed = 0', caption='Recoil Ascent Speed')
    typeDef.AddMember('Float recoilAscentMaxSpeed = 0', caption='Recoil Ascent Max Speed')
    typeDef.AddMember('Float recoilReturnSpeed = 0', caption='Recoil Return Speed')
    typeDef.AddMember('Float recoilReturnMaxSpeed = 0', caption='Recoil Return Max Speed')
    typeDef.AddMember('Float recoilPitchLimit = 0', caption='Recoil Pitch Limit')
    typeDef.AddMember('Float recoilHandFactor = 0', caption='Recoil Hand Factor')
    typeDef.AddMember('Float recoilForce = 0', caption='Physical Recoil Force')
    typeDef = ax2.CreateType('WeaponPlacementInfo', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Vector locationOffset', caption='location offset')
    typeDef.AddMember('Rotator rotationOffset', caption='rotation offset')
    typeDef = ax2.CreateType('WeaponDOFInfo', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float defaultDistance', caption='DOF distance in default mode')
    typeDef.AddMember('Float defaultInnerRadius', caption='DOF inner radius (control the fading range) in default mode')
    typeDef.AddMember('Float zoomedDistance', caption='DOF distance in zoomed mode')
    typeDef.AddMember('Float zoomedInnerRadius', caption='DOF inner radius (control the fading range) in zoomed mode')
    typeDef = ax2.CreateType('WeaponSpring', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Bool enableWeaponSpring', caption='Enabled?')
    typeDef.AddMember('Vector locationInterpSpeed', caption='Location Interpolation Speed')
    typeDef.AddMember('Vector locationStrength', caption='Location Strength')
    typeDef.AddMember('Vector rotationInterpSpeedPYR', caption='Rotation Interpolation Speed (Pitch, Yaw, Roll)')
    typeDef.AddMember('Vector rotationStrengthPYR', caption='Rotation Strength (Pitch, Yaw, Roll)')
    typeDef.AddMember('Float rotationAxisOffset', caption='Offset of rotation axis')
    typeDef = ax2.CreateType('ENceCameraMode', Enumerate, forUE3=True)
    typeDef.AddElement('NCE_CM_FIRST_PERSON')
    typeDef.AddElement('NCE_CM_THIRD_PERSON')
    typeDef.AddElement('NCE_CM_VEHICLE')
    typeDef.AddElement('NCE_CM_VEHICLE_FIRST_PERSON')
    typeDef.AddElement('NCE_CM_TURRET_FIRST_PERSON')
    typeDef.AddElement('NCE_CM_AIR_VEHICLE')
    typeDef.AddElement('NCE_CM_TURRET_THIRD_PERSON')
    typeDef.AddElement('NCE_CM_ARCBALL')
    typeDef.AddElement('NCE_CM_TURRET_EMPTY')
    typeDef = ax2.CreateType('NceCameraModeParams', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('ENceCameraMode eCameraMode = NCE_CM_THIRD_PERSON', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float fBoomLength = 650')
    typeDef.AddMember('Vector vBoomOrigin')
    typeDef.AddMember('Vector vBoomOffset')
    typeDef.AddMember('Vector vFocalPointOffset')
    typeDef.AddMember('Vector vSafeCameraOffset')
    typeDef.AddMember('Float fFieldOfView = 75')
    typeDef.AddMember('Float fSecondaryFieldOfView = 90')
    typeDef.AddMember('Float fTurrentSlerpRate = 0')
    typeDef.AddMember('Float fTargetActorSlerpRate = 0')
    typeDef.AddMember('Name sFollowSocketName', modifyFlag=MODIFY_TYPE_CHANGED)
    typeDef.AddMember('Actor m_pParentActor', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED))
    typeDef.AddMember('nceTurret m_pTurret', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED))
    typeDef.AddMember('Bool m_bPivotOnTurret = False')
    typeDef.AddMember('Float fovBlendTime = 1', text='the time in seconds to blend between first the secondary FOV')
    typeDef = ax2.CreateType('CurveReference', standalone=False, forUE3=False, group=GROUPS.Content)
    typeDef.AddMember('ContentReference curveObject', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Int curveIndex = 0')
    typeDef.AddMember(('Int %s' % CONTENT_INDEX), attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.HIDDEN), modifyFlag=MODIFY_REMOVED)
    typeDef = ax2.CreateType('CameraControlInfo', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float yawSpeed = 120', text='General yaw speed when the joystick is not pushed to the limit, which is also the base speed for acceleration.', group=GROUPS.Content)
    typeDef.AddMember('Float yawExtremeSpeed = 360', text='Extreme yaw speed that could be reached after acceleration when the joystick is pushed to the limit', group=GROUPS.Content)
    typeDef.AddMember('Float pitchSpeed = 60', text='General pitch speed when the joystick is not pushed to the limit, which is also the base speed for acceleration.', group=GROUPS.Content)
    typeDef.AddMember('Float pitchExtremeSpeed = 100', text='Extreme pitch speed that could be reached after acceleration when the joystick is pushed to the limit', group=GROUPS.Content)
    typeDef.AddMember('Float timeToExtreme = 4', text='the acceleration time for both yaw & pitch(in seconds)', group=GROUPS.Content)
    typeDef.AddMember('Float minAccelMagnitude = 0.95', text='minimum controller magnitude to begin accumulating controller acceleration', group=GROUPS.Content)
    typeDef.AddMember('Float max3rdPersonPitchLimit = 75', text='the max third person pitch limit (in degrees)', group=GROUPS.Content)
    typeDef.AddMember('Float min3rdPersonPitchLimit = -15', text='the min third person pitch limit (in degrees)', group=GROUPS.Content)
    typeDef.AddMember('CurveReference curveMagnitudeScaling', text='controls how the basic speed changes based on the magnitude')
    typeDef.AddMember('CurveReference curveAcceleration', text='controls how acceleration is applied')
    typeDef.AddMember('CurveReference curveBearingScaling', text='controls the scaling of camera bearing, for additional smoothing')
    typeDef = ax2.CreateType('RDVDeploymentSettings', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float m_fCloakEffectTime = 3.0', uemodifier='private transient', caption='Time span of the cloak effect', range=(0.0, 60.0))
    typeDef.AddMember('Float m_fCloakDistanceEntry = 100.0', uemodifier='private transient', caption='Entry distance from dropoff location to uncloak', range=(0.0, 5000.0))
    typeDef.AddMember('Float m_fCloakDistanceExit = 100.0', uemodifier='private transient', caption='Exit distance from dropoff location to cloak', range=(0.0, 5000.0))
    typeDef.AddMember('Float m_fCloakDestroyTime = 3.0', uemodifier='private transient', caption='Time after cloaking before destroying', range=(0.0, 60.0))
    typeDef.AddMember('Float m_fRDVSpawnDistance = 600.0', uemodifier='private transient', caption='Initial Spawn Distance', range=(100.0, 5000.0))
    typeDef.AddMember('Float m_fRDVSpawnHeight = 75.0', uemodifier='private transient', caption='Spawn Height above landscape', range=(0.0, 500.0))
    typeDef.AddMember('Float m_fDropOffRandDist = 10.0', uemodifier='private transient', caption='Drop Off Randomise Distance', range=(0.0, 5000.0))
    typeDef.AddMember('Float m_fDropOffHeightAdjust = 0.0', uemodifier='private transient', caption='Drop Off Height Adjust', range=(0.0, 100.0))
    typeDef.AddMember('Float m_fDropOffSlowSpeed = 10.0', uemodifier='private transient', caption='Drop Off Max Speed', range=(5.0, 50.0))
    typeDef.AddMember('Float m_fDropOffCloseDist = 15.0', uemodifier='private transient', caption='Drop Off Close Enough Distance', range=(1.0, 50.0))
    typeDef.AddMember('Float m_fDropOffTime = 0.0', uemodifier='private transient', caption='Wait Time after dropping vehicle', range=(0.0, 10.0))
    typeDef.AddMember('Float m_fEntryPathHeight = 10.0', uemodifier='private transient', caption='Height before making final descent', range=(5.0, 50.0))
    typeDef.AddMember('Float m_fCloseDistPreDescend = 5.0', uemodifier='private transient', caption='Distance before making final descent', range=(5.0, 50.0))
    typeDef.AddMember('Float m_fDeploySafeDist = 25.0', uemodifier='private transient', caption='Deploy Distance Prioritised', range=(0.0, 100.0))
    typeDef.AddMember('Float m_fDeployMaxDist = 150.0', uemodifier='private transient', caption='Deploy Distance Fallback', range=(0.0, 250.0))
    typeDef.AddMember('Float m_fDeploySafeReduction = 20.0', uemodifier='private transient', caption='Distance to reduce Navmesh bounds by', range=(10.0, 100.0))
    typeDef.AddMember('Name m_VehicleSpawnSocketName = VehicleSpawnSocket', uemodifier='private transient', caption='Vehicle Spawn Socket Name')
    typeDef.AddMember('Name m_VehicleAttachSocketName = VehicleAttachSocket', uemodifier='private transient', caption='Vehicle Attach Socket Name')
    typeDef.AddMember('Float m_fJointLinearLimitValue = 0.1', uemodifier='private transient', caption='Joint Linear Limit Value', range=(0.0, None))
    typeDef.AddMember('Float m_fJointLinearLimitRestitution = 0.25', uemodifier='private transient', caption='Joint Linear Limit Restitution', range=(0.0, 1.0))
    typeDef.AddMember('Float m_fJointLinearLimitSpring = 30000.0', uemodifier='private transient', caption='Joint Linear Limit Spring', range=(0.0, None))
    typeDef.AddMember('Float m_fJointLinearLimitDamping = 50000.0', uemodifier='private transient', caption='Joint Linear Limit Damping', range=(0.0, None))
    typeDef.AddMember('Float m_fJointPitchLimitValue = 1.0', uemodifier='private transient', caption='Joint Pitch Limit Value', range=(-90.0, 90.0))
    typeDef.AddMember('Float m_fJointPitchLimitRestitution = 0.25', uemodifier='private transient', caption='Joint Pitch Limit Restitution', range=(0.0, 1.0))
    typeDef.AddMember('Float m_fJointPitchLimitSpring = 150000.0', uemodifier='private transient', caption='Joint Pitch Limit Spring', range=(0.0, None))
    typeDef.AddMember('Float m_fJointPitchLimitDamping = 30000000.0', uemodifier='private transient', caption='Joint Pitch Limit Damping', range=(0.0, None))
    typeDef.AddMember('Float m_fJointRollLimitValue = 1.0', uemodifier='private transient', caption='Joint Roll Limit Value', range=(-90.0, 90.0))
    typeDef.AddMember('Float m_fJointRollLimitRestitution = 0.25', uemodifier='private transient', caption='Joint Roll Limit Restitution', range=(0.0, 1.0))
    typeDef.AddMember('Float m_fJointRollLimitSpring = 150000.0', uemodifier='private transient', caption='Joint Roll Limit Spring', range=(0.0, None))
    typeDef.AddMember('Float m_fJointRollLimitDamping = 30000000.0', uemodifier='private transient', caption='Joint Roll Limit Damping', range=(0.0, None))
    typeDef = ax2.CreateType('AISettings', standalone=True, forUE3=True)
    typeDef.AddMember('RDVDeploymentSettings m_RDVSettings', uemodifier='private transient', caption='RDV Deployment Settings')
    typeDef = ax2.CreateType('WorldIcon', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('String iconSocketName', text='The socket name of this icon in mesh skeleton-bone', caption='Icon Socket Name')
    typeDef.AddMember('Float verticalOffset', text='The offset on vertical direction', caption='Vertical Offset')
    typeDef = ax2.CreateType('WorldIconFadeDistances', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float iconFadeLength = 5000.0', text='Icon is fully transparent when further away than Near + Length', caption='Icon far fade in length (cm)')
    typeDef.AddMember('Float iconFadeNear = 15000.0', text='Icon is fully faded in when closer', caption='Icon near fade in distance (cm)')
    typeDef.AddMember('Float infoFadeLength = 1500.0', text='Name is fully transparent when further away than Near + Length', caption='Name far fade in length (cm)')
    typeDef.AddMember('Float infoFadeNear = 2000.0', text='Name is fully faded in when closer', caption='Name near fade in distance (cm)')
    typeDef = ax2.CreateType('WorldIconFadeSettings', standalone=True, forUE3=True)
    typeDef.AddMember('Float innerViewConeAngle = 9', text='Inner Angle for view cone, the obj will be seen fully from -angle to angle', caption='Inner View Cone')
    typeDef.AddMember('Float outerViewConeAngle = 18', text='Outer Angle for view cone, the obj will have a alpha decrease from inner angle to outer angle', caption='Outer View Cone')
    typeDef.AddMember('WorldIconFadeDistances enemyTroops', text='Fading distances for enemy troops', caption='Enemy Troops')
    typeDef.AddMember('WorldIconFadeDistances teamMembers', text='Fading distances for team members', caption='Team Members')
    typeDef.AddMember('WorldIconFadeDistances squadMembers', text='Fading distances for squad members', caption='Squad Members')
    typeDef.AddMember('WorldIconFadeDistances enemyVehicles', text='Fading distances for enemy vehicles', caption='Enemy Vehicles')
    typeDef.AddMember('WorldIconFadeDistances teamVehicles', text='Fading distances for team vehicles', caption='Team Vehicles')
    typeDef.AddMember('WorldIconFadeDistances squadVehicles', text='Fading distances for squad vehicles', caption='Squad Vehicles')
    typeDef.AddMember('WorldIconFadeDistances enemyMcc', text='Fading distances for enemy MCC', caption='Enemy MCC')
    typeDef.AddMember('WorldIconFadeDistances teamMcc', text='Fading distances for team MCC', caption='Team MCC')
    typeDef.AddMember('WorldIconFadeDistances enemyInstallations', text='Fading distances for enemy installations', caption='Enemy Installations')
    typeDef.AddMember('WorldIconFadeDistances teamInstallations', text='Fading distances for team installations', caption='Team Installations')
    typeDef.AddMember('WorldIconFadeDistances primaryControlledObjectives', text='Fading distances for controlled primary objectives', caption='Primary Controlled Objectives')
    typeDef.AddMember('WorldIconFadeDistances secondaryControlledObjectives', text='Fading distances for controlled secondary objectives', caption='Secondary Controlled Objectives')
    typeDef = ax2.CreateType('CmdObjTargetProp', standalone=False, group=GROUPS.Logic, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float radiusForAttack = 15000.0', text='The scope of commander objective when attacking the target', caption='Radius When Attacking')
    typeDef.AddMember('Float radiusForDefend = 10000.0', text='The scope of commander objective when defending the target', caption='Radius When Defending')
    typeDef.AddMember('Float radiusForScout = 8000.0', text='The scope of commander objective when scouting', caption='Radius For Scout')
    typeDef.AddMember('Float wpMultiplierForAttackCommander = 1.5', text='The multiplier of war points for commander when attacking the target', caption='Commander WarPoint Multiplier When Attacking')
    typeDef.AddMember('Float wpMultiplierForAttackInfantry = 1.5', text='The multiplier of war points for infantry when attacking the target', caption='Infantry WarPoint Multiplier When Attacking')
    typeDef.AddMember('Float wpMultiplierForDefendCommander = 2.5', text='The multiplier of war points for commander when defending the target', caption='Commander WarPoint Multiplier When Defending')
    typeDef.AddMember('Float wpMultiplierForDefendInfantry = 2.5', text='The multiplier of war points for infantry when defending the target', caption='Infantry WarPoint Multiplier When Defending')
    typeDef.AddMember('Float wpMultiplierForScoutCommander = 1.0', text='The multiplier of war points for commander when scouting', caption='Commander WarPoint Multiplier When Scouting')
    typeDef.AddMember('Float wpMultiplierForScoutInfantry = 1.5', text='The multiplier of war points for infantry when scouting', caption='Infantry WarPoint Multiplier When Scouting')
    typeDef = ax2.CreateType('TaggedSound', standalone=False, forUE3=False, group=GROUPS.Content)
    typeDef.AddMember('String soundTag')
    typeDef.AddMember('ContentReference soundTemplate', modifyFlag=MODIFY_TYPE_CHANGED)
    typeDef.AddMember('Bool isLocal = False')
    typeDef.AddMember('String socketName')
    typeDef.AddMember(('Int %s' % CONTENT_INDEX), attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.HIDDEN), modifyFlag=MODIFY_REMOVED)



def PopulateModule(ax2):
    typeDef = ax2.CreateType('EModuleType', Enumerate, forUE3=False)
    typeDef.AddElement('MT_General')
    typeDef.AddElement('MT_Spawn')
    typeDef = ax2.CreateType('ESlotType', Enumerate, forUE3=False)
    for (slotType, slotDesc,) in stims.slotTypes.items():
        typeDef.AddElement(slotType, ('%s : %s' % (slotType, slotDesc)))

    typeDef = ax2.CreateType('EAttributeModifier', Enumerate, forUE3=False)
    for modifier in stims.MOD_ALL:
        typeDef.AddElement(modifier, modifier)

    typeDef = ax2.CreateType('EModuleAttributeType', Enumerate, forUE3=False)
    for attType in stims.MODULE_ATT_TYPES:
        typeDef.AddElement(attType, attType)

    typeDef = ax2.CreateType('AttributeModifier', standalone=False, group=GROUPS.Logic, forUE3=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('String attributeName', text='The name of the attribute to be modified', caption='Attribute Name')
    typeDef.AddMember('Float modifierValue', text='The value to apply', caption='Modifier Value')
    typeDef.AddMember('EAttributeModifier modifierType', text='The type of the modifier, 0:Add, 1:Multiply, 2:Replace', caption='Modifier Type')
    typeDef.AddMember('Bool modifierValueBool', text='The value of boolean modifier, can only be used with replace(2) operation', caption='Modifier Value Bool', attributeFlag=DEFAULT_ATTRIB_FLAGS)
    typeDef.AddMember('EModuleAttributeType attributeType', text='Module attribute types', caption='Module Attribute Types')
    typeDef = ax2.CreateType('DustModule', standalone=True, group=GROUPS.Logic, forUE3=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('EModuleType moduleType = MT_General', text='The type of this module', caption='Module Type')
    typeDef.AddMember('Bool isPassive = True', text='Whether this is a passive module', caption='Is Passive')
    typeDef.AddMember('ESlotType slotType', text='Which type of slot this module is compatible with', caption='Slot Type')
    typeDef.AddMember('Bool isTogglable = False', text='If true, module can be turned on/off manually (by a player that is)', caption='Is Togglable')
    typeDef.AddMember('Float activationTime = 0', text='How long it takes for this module to become active. <=0 for indefinitely', caption='Activation Time')
    typeDef.AddMember('Float rechargeTime = 0', text='The recharge time of the module, in seconds. <=0 for instant recharging', caption='Recharge Time')
    typeDef.AddMember('Float duration = 60', text='Time in seconds this module stays active.', caption='Active Duration')
    typeDef.AddMember('Int cycles = 10', text='Number of cycles when active.', caption='Num. of Cycles')
    typeDef.AddMember('AttributeModifier modifier', text='attribute modifier of this module', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Attribute Modifier')
    typeDef = ax2.CreateType('ModuleSlot', standalone=False, group=GROUPS.Logic, forUE3=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('ESlotType slotType', text='The type of this slot', caption='Slot Type')
    typeDef.AddMember('Int count = 1', text='The number of slots of the slot type specified', caption='Num. of Slots')
    typeDef = ax2.CreateType('AssociatedSlot', standalone=False, group=GROUPS.Logic, forUE3=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('ESlotType slotType', text='The slot type of this slot', caption='Slot Type')
    typeDef.AddMember('String boneSocketName', text='The socket name of this slot in mesh skeleton-bone', caption='Bone Socket Name')
    typeDef.AddMember('TypeReference defaultModuleType = -1', modifyFlag=MODIFY_TYPE_CHANGED, text='The default module for this slot.', caption='Default Module Type')



def PopulateEntityAndAdapter(ax2):
    typeDef = ax2.CreateType('Entity', standalone=True, group=GROUPS.Content, forUE3=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Unicode mDisplayName', modifyFlag=MODIFY_TYPE_CHANGED, text='The short display name of this entity type.', group=GROUPS.Content, caption='Display Name')
    typeDef.AddMember('Unicode mDescription', modifyFlag=MODIFY_TYPE_CHANGED, text='Detailed description of this entity type.', group=GROUPS.Content, caption='Description')
    typeDef.AddMember('String mUE3Class', text='The UE3 class that is used to spawn this entity in the world', group=GROUPS.Content, caption='UE3 Class')
    typeDef.AddMember('TypeReference mIconRef = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='Icon', text='Icon', group=GROUPS.Content, caption='Icon')
    typeDef.AddMember('URL mGameMechanicsRef = http://dustwiki', group=GROUPS.Content, caption='Game Mechanics Reference')
    typeDef.AddMember('URL mAuthoringRef = http://dustwiki', group=GROUPS.Content, caption='Content Authoring Reference')
    typeDef.AddMember('Bool mIsPublished = False', text='whether this entity can be used in the game', group=GROUPS.Content, caption='Is Published')
    typeDef.AddMember('String mTypeName', text='the brief name of this entity type', group=GROUPS.Content, caption='Typename', modifyFlag=MODIFY_REMOVED)
    typeDef = ax2.CreateType('Icon', standalone=True, group=GROUPS.Content, forUE3=False)
    typeDef.AddMember('String mInventroyImageName', text='The inventory icon image name.', group=GROUPS.Content, caption='Inventory Icon image name', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('String mInventoryImageName', text='The inventory icon image name.', group=GROUPS.Content, caption='Inventory Icon image name', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('String mOVMapImageName', text='The overview map icon image name.', group=GROUPS.Content, caption='Overview map Icon image name', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('String mContextMenuImageName', text='The context menu icon image name.', group=GROUPS.Content, caption='Context menu image name', modifyFlag=MODIFY_REMOVED)
    typeDef = ax2.CreateType('Adapter', standalone=True, group=GROUPS.Content, forUE3=False)
    typeDef.AddMember('ModuleSlot mSlots', text='the array of all the slots this vic has', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), group=GROUPS.Logic, caption='Module Slots')
    typeDef.AddMember('AssociatedSlot mAssociatedSlots', text='the array of all the associated slots this vic has', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), group=GROUPS.Logic, caption='Associated Slots')



def PopulatePawn(ax2):
    typeDef = ax2.CreateType('DustPawn', standalone=True, forUE3=True)
    typeDef.AddMember('NceCameraModeParams m_CameraFirstPersonParams', text='first person camera params', group=GROUPS.Content)
    typeDef.AddMember('NceCameraModeParams m_CameraThirdPersonParams', text='third person camera params', group=GROUPS.Content)
    typeDef.AddMember('CurveReference mCameraYawCurve', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('CurveReference mCameraPitchCurve', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('CurveReference mCameraAccelYawCurve', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('CurveReference mCameraAccelPitchCurve', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float mYawSpeed = 200', modifyFlag=MODIFY_REMOVED, text='General yaw speed when the joystick is not pushed to the limit, which is also the base speed for acceleration.', group=GROUPS.Content)
    typeDef.AddMember('Float mPitchSpeed = 170', modifyFlag=MODIFY_REMOVED, text='General pitch speed when the joystick is not pushed to the limit, which is also the base speed for acceleration.', group=GROUPS.Content)
    typeDef.AddMember('Float mYawExtremeSpeed = 600', modifyFlag=MODIFY_REMOVED, text='Extreme yaw speed that could be reached after acceleration when the joystick is pushed to the limit', group=GROUPS.Content)
    typeDef.AddMember('Float mPitchExtremeSpeed = 170', modifyFlag=MODIFY_REMOVED, text='Extreme pitch speed that could be reached after acceleration when the joystick is pushed to the limit', group=GROUPS.Content)
    typeDef.AddMember('Float mYawTimeToExtreme = 4', modifyFlag=MODIFY_REMOVED, text='the yaw acceleration time (in seconds)', group=GROUPS.Content)
    typeDef.AddMember('Float mPitchTimeToExtreme = 4', modifyFlag=MODIFY_REMOVED, text='the pitch acceleration time (in seconds)', group=GROUPS.Content)
    typeDef.AddMember('CameraControlInfo mCamCtrlParam', text='parameters for camera control', group=GROUPS.Content)



def PopulateVIC(ax2):
    typeDef = ax2.CreateType('DustVIC_Property', standalone=False, attributeFlag=((DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.MODULIZED) | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Int maxShield', group=GROUPS.Combat, caption='Max Shield')
    typeDef.AddMember('Int maxArmor', group=GROUPS.Combat, caption='Max Armor')
    typeDef.AddMember('Int maxHealth', group=GROUPS.Combat, caption='Max HP')
    typeDef.AddMember('Float healRate', text='Heal rate for the armor/shield and health, values in per second', group=GROUPS.Combat, caption='Heal Rate', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float healShieldRate', text='Heal rate for the shield, values in per second', group=GROUPS.Combat, caption='Heal Shield Rate')
    typeDef.AddMember('Float healArmorRate', text='Heal rate for the armor, values in per second', group=GROUPS.Combat, caption='Heal Armor Rate')
    typeDef.AddMember('Float healHealthRate', text='Heal rate for the health, values in per second', group=GROUPS.Combat, caption='Heal Health Rate')
    typeDef.AddMember('Float healWarPointCostRatio', text="The amount of war points that's needed to heal this unit from zero to full health", group=GROUPS.Logic, caption='War Point Cost to Heal')
    typeDef.AddMember('Int deployWarPointCost', text='How many war points it costs to deploy this unit to the battlefield', group=GROUPS.Logic, caption='War Point Cost')
    typeDef.AddMember('Int sight', text='Fog of war clearance range', group=GROUPS.Logic, caption='FoW Sight Range')
    typeDef.AddMember('Int maxCpuReserve', text='The cpu reserve used to support the modules/subsystems', group=GROUPS.Logic, caption='Max CPU')
    typeDef.AddMember('Int maxPowerReserve', text='The power grid reserve used to support the modules/subsystems', group=GROUPS.Logic, caption='Max PG')
    typeDef.AddMember('Float massScale = 1', text='The mass scale which can be multiplied with the mass value automatically calculated by the physics system', group=GROUPS.Physics, caption='Mass Scale')
    typeDef.AddMember('Int wpRewardOnDestroy', text='How many war points rewarded to the destroyer when this unit is killed', group=GROUPS.Logic, caption='War Point Reward')
    typeDef.AddMember('Float commanderWPCommission = 0.2', text='The percentage of WP earned by all the team members that goes to the commander', group=GROUPS.Logic, caption='Commander WP Commission')
    typeDef.AddMember('DamageProtection protection', text='Protection value to implement our own damage mechanism', caption='Damage Protection')
    typeDef.AddMember('Float groundSpeed', text='The maximum ground speed', group=GROUPS.Physics, caption='Max Ground Speed')
    typeDef.AddMember('Float airSpeed', text='The maximum flying speed', group=GROUPS.Physics, caption='Max Air Speed')
    typeDef.AddMember('Float rateOfFireMultiplier = 1', text='The multiplier for the rate of fire', group=GROUPS.Combat, caption='RoF Multiplier')
    typeDef.AddMember('Float reloadTimeMultiplier = 1', text='The multiplier for the weapon reload time', group=GROUPS.Combat, caption='Reload Time Multiplier')
    typeDef.AddMember('Float damageMultiplier = 1', text='The multiplier to the weapon damage', group=GROUPS.Combat, caption='Damage Multiplier')
    typeDef.AddMember('WorldIcon worldIcon', text='The position adjust for 3D icon of Character, Vehicle, Installation', group=GROUPS.Content, caption='3DIcon')
    typeDef.AddMember('Int overviewMapIconID', modifyFlag=MODIFY_REMOVED, text='The id of the icon representing this unit in the overviewmap', group=GROUPS.Content, caption='Overview Map Icon ID')
    typeDef.AddMember('Int overviewMapIconSize', modifyFlag=MODIFY_REMOVED, text='The size of the icon representing this unit in the overviewmap', group=GROUPS.Content, caption='Overview Map Icon Size')
    typeDef = ax2.CreateType('DustVIC', standalone=True)
    typeDef.AddMember('DustVIC_Property mVICPropertyEvaluated', text='The properties after module evaluation', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated VIC Properties')
    typeDef.AddMember('DustVIC_Property mVICPropertyDefault', text='The default properties streamed from CATMA', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default VIC Properties')
    typeDef.AddMember('DustVIC_Property mVICProp', text='The default properties streamed from CATMA', uemodifier='repnotify', caption='VIC Properties')



def PopulateVIC_Vehicle(ax2):
    typeDef = ax2.CreateType('DustVIC_Vehicle_Property', standalone=False, attributeFlag=((DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.MODULIZED) | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Bool ejectPassengersWhenFlipped', text='If true, all passengers (inc. the driver) will be ejected if the vehicle flips over', group=GROUPS.Logic, caption='Eject passengers when flipped')
    typeDef.AddMember('Bool mustBeUpright', text='If true, vehicle must be upright to be entered', group=GROUPS.Logic, caption='Must be upright')
    typeDef.AddMember('Float explosionDamageAmount', group=GROUPS.Combat, caption='Explosion Damage Amount', range=(0.0, None))
    typeDef.AddMember('Float explosionDamageRadius', group=GROUPS.Combat, caption='Explosion Damage Radius', range=(0.0, None))
    typeDef.AddMember('Float explosionDamageMomentum', group=GROUPS.Combat, caption='Explosion Damage Momentum', range=(0.0, None))
    typeDef.AddMember('Float minRunOverSpeed', text='Speed must be greater than this for running into someone to do damage', group=GROUPS.Combat, caption='Min Ramming Speed', range=(0.0, None))
    typeDef.AddMember('Float upsideDownDamagePerSec', text='Damage per second if vehicle is upside down', group=GROUPS.Combat, caption='Upsidedown Damage Per Second', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float proximityShakeRadius', text='Maximum distance at which proximity shake occurs', group=GROUPS.Content, caption='Proximity Shake Radius', range=(0.0, None))
    typeDef.AddMember('Float maxFireEffectDistance', modifyFlag=MODIFY_REMOVED, text='The maximum distance out where a fire effect will be spawned', group=GROUPS.Content, caption='Max Fire Effect Distance')
    typeDef.AddMember('Float ownershipExpireTime', text='How many seconds after the owner leaves the vehicle until the ownership expires', group=GROUPS.Logic, caption='Ownership Expiration Timer', range=(0.0, None))
    typeDef.AddMember('Float ownershipExpireRadius', text='If all the friendly players are out of this radius, the expire timer will be started', group=GROUPS.Logic, caption='Ownership Expiration Radius', range=(0.0, None))
    typeDef.AddMember('Float selfDestroyTime', text='How many seconds after the vehicle enters non-owned state before it self-destructs', group=GROUPS.Logic, caption='Self-Destruct Timer', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float abandonDamageRatio', text='Percent of health to lose every abandonDamageInterval', group=GROUPS.Logic, caption='Abandon Damage Ratio', range=(0.0, 1.0))
    typeDef.AddMember('Float abandonDamageInterval', text='Abandon damage interval', group=GROUPS.Logic, caption='Abandon Damage Interval', range=(0.0, None))
    typeDef.AddMember('Bool canSpawnPlayer', text='Whether this vehicle can be used as a spawn point', group=GROUPS.Logic, caption='Can Spawn Player')
    typeDef.AddMember('Float customGravityScaling = 1', text='Custom gravity scaling, default to 1.0', group=GROUPS.Physics, caption='Custom Gravity Scaling', range=(0.0, None))
    typeDef.AddMember('Float maxElevation', text='Max elevation of the air vehicle to the Z origin of the map', group=GROUPS.Physics, caption='Flight Ceiling', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Int simObjTypeID', text='the type id of the simulation object', group=GROUPS.Physics, modifyFlag=MODIFY_REMOVED, caption='Simulation Object Type ID')
    typeDef.AddMember('TypeReference simObjType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='NceVehicleSimBase', text='the type of the simulation object', group=GROUPS.Physics, caption='Simulation Object Type')
    typeDef.AddMember('Bool canFlip', text='If true, vehicle can be uprighted by player', group=GROUPS.Physics, caption='Can Flip')
    typeDef.AddMember('Bool turnInPlace', text='Whether vehicle can turn in place', group=GROUPS.Physics, caption='Turn In Place')
    typeDef.AddMember('Float maxSpeed', text='Absolute max physics speed', group=GROUPS.Physics, caption='Max Speed', range=(0.0, None))
    typeDef.AddMember('Vector cMassOffset', text='Offset of the center of mass', group=GROUPS.Physics, caption='Centre-Of-Mass Offset')
    typeDef.AddMember('Vector inertiaTensorMultiplier', text='Inertia Tensor', group=GROUPS.Physics, caption='Inertia Tensor Multiplier')
    typeDef.AddMember('Float wpTimeToJudgeAbandoned = 2.0', text='The vehicle will be thought of abandoned if all passengers leave it for this time', group=GROUPS.Logic, caption='Time To Judge Abandoned', range=(0.0, None))
    typeDef.AddMember('Float wpRewardRatioForAbandoned = 0.1', text="Only part of war points for destroying the vehicle will be available if it's abandoned", group=GROUPS.Logic, caption='WP Ratio For Abandoned Vehicle', range=(0.0, 1.0))
    typeDef.AddMember('Float m_fExitRadius = 5.0', group=GROUPS.Logic, caption='Exit Radius', text='The distance from the vehicle at which exiting characters will be placed', range=(0.0, None))
    typeDef.AddMember('Float m_fEyeHeight = 0.9', group=GROUPS.Logic, caption='Eye Height', text='Eye Height')
    typeDef.AddMember('Float m_fMomentumMult = 1.0', group=GROUPS.Physics, caption='Momentum Multiplier', text='Momentum Multiplier', range=(0.0, None))
    typeDef = ax2.CreateType('DustVIC_Vehicle', standalone=True)
    typeDef.AddMember('DustVIC_Vehicle_Property mVehiclePropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated Vehicle Properties')
    typeDef.AddMember('DustVIC_Vehicle_Property mVehiclePropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default Vehicle Properties')
    typeDef.AddMember('DustVIC_Vehicle_Property mVehProp', uemodifier='repnotify', caption='Vehicle Properties')
    typeDef = ax2.CreateType('NceVehicle', standalone=True)
    typeDef.AddMember('NceCameraModeParams m_aSeatCameraFirstPerson', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), uemodifier='private transient', caption='Camera modes used for the 1st-person view')
    typeDef.AddMember('NceCameraModeParams m_aSeatCameraThirdPerson', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), uemodifier='private transient', caption='Camera modes used for the 3rd-person view')
    typeDef.AddMember('NceCameraModeParams mCameraGarage', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), uemodifier='private transient', caption='Camera modes used for the fitting screen')
    typeDef.AddMember('CurveReference m_FieldOfViewVsSpeedCurve', uemodifier='norep', caption='Field of View vs Speed Curve')
    typeDef.AddMember('CurveReference m_SteeringCurveNce', uemodifier='norep', caption='Steering Curve')
    typeDef.AddMember('String mSimObjClass', text='The UE3 object class used to create the sim object', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED), group=GROUPS.Physics, caption='Sim Obj Class')
    typeDef.AddMember('String mVehicleClassName', group=GROUPS.Content, caption='Vehicle Class Name')
    typeDef.AddMember('String mVehicleDesignationName', group=GROUPS.Content, caption='Vehicle Designation Name')
    typeDef.AddMember('Float m_fInputBufferAngle = 0.0', group=GROUPS.Content, uemodifier='private transient', caption='Input Buffer Angle', range=(-89.9, 89.9))
    typeDef.AddMember('DustWheelProperties m_aVehicleWheels', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), uemodifier='private transient', caption='Vehicle Wheels')
    typeDef.AddMember('VehicleUprightConstraints m_UprightConstraints', group=GROUPS.Physics, uemodifier='private transient', caption='Upright Constraints')
    typeDef.AddMember('VehiclePhysicalMaterials m_VehiclePhysicalMaterials', group=GROUPS.Physics, uemodifier='private transient', caption='Physical Materials')



def PopulateNceVehicleAir(ax2):
    typeDef = ax2.CreateType('NceVehicleAir', standalone=True)
    typeDef.AddMember('Float m_fHeightToOpenLandingGear = 1000.0', uemodifier='private transient', group=GROUPS.Content, caption='The Height at which to open the landing gear', range=(0.0, None))
    typeDef.AddMember('Float m_fSpeedToOpenLandingGear = 100.0', uemodifier='private transient', group=GROUPS.Content, caption='The Speed at which to open the landing gear', range=(0.0, None))
    typeDef.AddMember('String m_sOpenLandingGearAnimName', text='The name of the anim node that contains the landing gear open animation', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, caption='Landing Gear Open Animation')
    typeDef.AddMember('String m_sCloseLandingGearAnimName', text='The name of the anim node that contains the landing gear close animation', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, caption='Landing Gear Close Animation')
    typeDef.AddMember('String m_sOpenLandingGearInputName', text='The name of the input on the blend node that contains the landing gear open animation', group=GROUPS.Content, caption='Landing Gear Open Input')
    typeDef.AddMember('String m_sCloseLandingGearInputName', text='The name of the input on the blend node that contains the landing gear close animation', group=GROUPS.Content, caption='Landing Gear Close Input')
    typeDef.AddMember('String m_sOpenDoorsInputName', text='The name of the input on the blend node that contains the doors open animation', group=GROUPS.Content, caption='Doors Open Input')
    typeDef.AddMember('String m_sCloseDoorsInputName', text='The name of the input on the blend node that contains the doors close animation', group=GROUPS.Content, caption='Doors Close Input')
    typeDef.AddMember('String m_sLandingGearBlendNodeName', text='The name of the anim blend node that contains the landing gear animations', group=GROUPS.Content, caption='Landing Gear Animation Blend Node')
    typeDef.AddMember('String m_sDoorsBlendNodeName', text='The name of the anim blend node that contains the doors animations', group=GROUPS.Content, caption='Doors Animation Blend Node')
    typeDef.AddMember('String m_asEngineName', text='The name of the anim control that contains the engine animation', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Engine Animation')



def PopulateNceVehicleSCV(ax2):
    typeDef = ax2.CreateType('NceVehicleSCVSiegeModeProperties', standalone=False, forUE3=False, group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float m_fBrakeAmount = 0.5', uemodifier='private transient', caption='Brake Amount', text='Braking throttle to apply while slowing down', range=(0.0, 1.0))
    typeDef.AddMember('Float m_fStopThreshold = 25.0', uemodifier='private transient', caption='Stop Threshold', text='Threshold speed to determine when the vehicle has stopped', range=(0.0, None))
    typeDef.AddMember('Float m_fDeployTime = 2.0', uemodifier='private transient', caption='Deploy Time', text='Time taken to deploy', range=(0.01, None))
    typeDef.AddMember('ContentReference m_pDeployingEffect', uemodifier='private transient', caption='Deploying Effect', text='Particle effect for deploying')
    typeDef.AddMember('Float m_fRetractTime = 2.0', uemodifier='private transient', caption='Retract Time', text='Time taken to retract', range=(0.01, None))
    typeDef.AddMember('Float m_fSuspensionChange = -0.75', uemodifier='private transient', caption='Suspension Change', text='Suspension bias change')
    typeDef.AddMember('Float m_fGripScale = 5.0', uemodifier='private transient', caption='Grip Scale', text='Wheel friction multiplier', range=(0.0, None))
    typeDef.AddMember('Float m_fInertiaTensorScale = 3.0', uemodifier='private transient', caption='Inertia Tensor Scale', text='Intertia tensor multiplier', range=(0.0, None))
    typeDef.AddMember('Float m_fMassScale = 3.0', uemodifier='private transient', caption='Mass Scale', text='Mass multiplier', range=(0.0, None))
    typeDef.AddMember('Vector m_vCOMMod', uemodifier='private transient', caption='COM Mod', text='Centre-of-mass modifier')
    typeDef.AddMember('Float m_fDamageMod = 2.0', uemodifier='private transient', caption='Damage Mod', text='Damage resistance modifier', range=(0.0, None))
    typeDef.AddMember('NceCameraModeParams m_CameraMode', uemodifier='private transient', caption='Camera Mode', text='Camera mode')
    typeDef = ax2.CreateType('NceVehicleSCVSiegeMode', standalone=True)
    typeDef.AddMember('NceVehicleSCVSiegeModeProperties m_SiegeModeProperties', uemodifier='private transient', caption='SCV Siege Mode Properties')



def PopulateVIC_Character(ax2):
    typeDef = ax2.CreateType('DustPawnMovement', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float groundSpeedScale = 1', caption='Ground Speed Scale')
    typeDef.AddMember('Float strafeSpeedScale = 1', caption='Strafe Speed Scale')
    typeDef.AddMember('Float backwardSpeedScale = 1', caption='Backward Speed Scale')
    typeDef.AddMember('Float jumpSpeed', caption='Jump Speed')
    typeDef.AddMember('Float maxLength = 0', caption='Max Length')
    typeDef.AddMember('Float collisionHeight', caption='Collision Height')
    typeDef.AddMember('Float collisionRadius', caption='Collision Radius')
    typeDef.AddMember('Float meshOffsetZ', caption='Mesh Offset Z')
    typeDef.AddMember('Float eyeOffsetZ', caption='Eye Offset Z')
    typeDef.AddMember('Float turningSpeedScale = 1', caption='Turning Speed Scale')
    typeDef = ax2.CreateType('DustVIC_Character_Property', standalone=False, attributeFlag=((DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.MODULIZED) | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float sprintSpeedThreshold', group=GROUPS.Physics, caption='Sprint Speed Threshold')
    typeDef.AddMember('Float jumpVelocityPenalty', group=GROUPS.Physics, caption='Jump Velocity Penalty')
    typeDef.AddMember('Float maxAccelRate', group=GROUPS.Physics, caption='Max Acceleration Rate')
    typeDef.AddMember('Float fallingAccelRate', group=GROUPS.Physics, caption='Falling Acceleration Rate')
    typeDef.AddMember('Float parachuteAccelRate', group=GROUPS.Physics, caption='Parachute Acceleration Rate')
    typeDef.AddMember('Float parachuteFriction', group=GROUPS.Physics, caption='Parachute Friction')
    typeDef.AddMember('Float parachuteBuoyancy', group=GROUPS.Physics, caption='Parachute Buoyancy')
    typeDef.AddMember('Float parachuteTimeThreshold', group=GROUPS.Physics, caption='Parachute Time Threshold')
    typeDef.AddMember('Float parachuteDistanceThreshold', group=GROUPS.Physics, caption='Parachute Distance Threshold')
    typeDef.AddMember('Float aimOffsetInterpSpeed', group=GROUPS.Content, caption='Aim Offset InterpSpeed')
    typeDef.AddMember('Float viewRotationInterpSpeedYaw', group=GROUPS.Content, caption='View Rotation InterpSpeed Yaw')
    typeDef.AddMember('Float viewRotationInterpSpeedPitch', group=GROUPS.Content, caption='View Rotation InterpSpeed Pitch')
    typeDef.AddMember('Float timeToSwitchToRelaxedPose = 2.0', group=GROUPS.Content, caption='Time to switch to relaxed pose')
    typeDef.AddMember('Float grenadeInitSpeed', text='The initial speed of the projectile fired by the grenade weapon', group=GROUPS.Combat, caption='Grenade Initial Speed')
    typeDef.AddMember('Float grenadeAccel', text='The acceleration', group=GROUPS.Combat, caption='Grenade Acceleration')
    typeDef.AddMember('Float grenadeTimeThrowStartToRelease', text='The time from throw animation start to the release of grenade', group=GROUPS.Combat, caption='Grenade ThrowToRelease Time')
    typeDef.AddMember('Float grenadeTimeReleaseToPullBack', text='The time from grenade release to throw animation done', group=GROUPS.Combat, caption='Greande RelaseToPullback Time')
    typeDef.AddMember('Float deathAnimationLength = 1', group=GROUPS.Physics, text='How long will death animation be played', caption='Death Animation Length')
    typeDef.AddMember('Bool playHitReactionAnimation = True', group=GROUPS.Physics, text='Whether to play hit reaction animation or physical hit reaction', caption='Play Hit Reaction Animation')
    typeDef.AddMember('DustPawnMovement movementRun')
    typeDef.AddMember('DustPawnMovement movementSprint')
    typeDef.AddMember('DustPawnMovement movementCrouch')
    typeDef.AddMember('DustPawnMovement movementProne')
    typeDef.AddMember('DustPawnMovement movementFreeWalk')
    typeDef = ax2.CreateType('DustVIC_Character', standalone=True)
    typeDef.AddMember('DustVIC_Character_Property mCharacterPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated Character Properties')
    typeDef.AddMember('DustVIC_Character_Property mCharacterPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default Character Properties')
    typeDef.AddMember('DustVIC_Character_Property mCharProp', uemodifier='repnotify', caption='Character Properties')
    typeDef.AddMember('InterpCurveFloat mViewRotationCurveYaw', modifyFlag=MODIFY_REMOVED, uemodifier='norep', caption='View Rotation Curve (Yaw)', group=GROUPS.Combat)
    typeDef.AddMember('InterpCurveFloat mViewRotationCurvePitch', modifyFlag=MODIFY_REMOVED, uemodifier='norep', caption='View Rotation Curve (Pitch)', group=GROUPS.Combat)



def PopulateVIC_Installation(ax2):
    typeDef = ax2.CreateType('DustVIC_Installation_Property', standalone=False, attributeFlag=((DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.MODULIZED) | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Int cpuRequirement', text='The CPU requirement of this installation', group=GROUPS.Logic, caption='CPU Requirement')
    typeDef.AddMember('Int pgRequirement', text='The PG requirement of this installation', group=GROUPS.Logic, caption='PG Requirement')
    typeDef.AddMember('Float criticalThreshold', text='Percentage of the health point below which this installation is considered critical', group=GROUPS.Logic, caption='Critical Threshold')
    typeDef.AddMember('Float playerSpawnInnerRadius', text='Inner radius of the spawn area around the installation', group=GROUPS.Logic, caption='Player Spawn Radius (Inner)')
    typeDef.AddMember('Float playerSpawnOuterRadius', text='Outer radius of the spawn area around the installation', group=GROUPS.Logic, caption='Player Spawn Radius (Outer)')
    typeDef.AddMember('Float playerSpawnAreaRadius = 500', text='Radius of the spawn area around the spawn point', group=GROUPS.Logic, caption='Player Spawn Area Radius')
    typeDef.AddMember('Float distancePlayerSpawnAreaToSupplyDepot = 2000', text='Distance From Player Spawn Area To SupplyDepot', group=GROUPS.Logic, caption='Distance From Player Spawn Area To SupplyDepot')
    typeDef.AddMember('Bool invisibleDuringDeployment', text='Whether the installation should be invisible during deployment', group=GROUPS.Content, caption='Invisible During Deployment')
    typeDef.AddMember('Bool hideWhenDying', text='Whether the installation should be hidden when in dying state', group=GROUPS.Content, caption='Hide When Dying')
    typeDef.AddMember('Bool canHurtBySameTeam', text='Whether the installation should take damage from same team', group=GROUPS.Combat, caption='Can Be Hurt By Same Team', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Bool friendlyFire', text='Whether the installation should attack units on the same team', group=GROUPS.Combat, caption='Friendly Fire')
    typeDef.AddMember('TypeReference explosionType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='ExplosionContent', text='The type id used to spawn installation component explosion', group=GROUPS.Content, caption='Explosion Type ID')
    typeDef.AddMember('Float activationDelay', text='The time after ths installation hits the ground before it starts activation', group=GROUPS.Logic, caption='Activation Delay')
    typeDef.AddMember('Float influenceRadius', text='The radius of the influence this installation has on AI pathfinding', group=GROUPS.Logic, caption='Influence Radius')
    typeDef.AddMember('Float baseDeployDamage = 200', text='The base damage caused by Installation when deployed on the groud', group=GROUPS.Combat, caption='Base Deploy Damage')
    typeDef.AddMember('Float deployDamageRadius = 1000', text='The radius of deploy damage', group=GROUPS.Combat, caption='Deploy Damage Radius')
    typeDef.AddMember('NceCameraModeParams m_CameraMode', uemodifier='private transient', caption='Camera Mode', text='Camera mode')
    typeDef = ax2.CreateType('DustVIC_Installation', standalone=True)
    typeDef.AddMember('DustVIC_Installation_Property mInstallationPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated Installation Properties')
    typeDef.AddMember('DustVIC_Installation_Property mInstallationPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default Installation Properties')
    typeDef.AddMember('DustVIC_Installation_Property mInstProp', uemodifier='repnotify', caption='Installation Properties')
    typeDef.AddMember('CmdObjTargetProp mCmdObjTargetProp', text='the properties for commander objective target', group=GROUPS.Logic, caption='Commander Objective Target Properties')



def PopulateInstallationComponent(ax2):
    typeDef = ax2.CreateType('SignalAmplifierProperty', standalone=False)
    typeDef.AddMember('Float coverRatio = 1', text='The percentage increase in functional radius when signal amplifier is active [This should not be changed!]', group=GROUPS.Logic, caption='Functional Radius')
    typeDef.AddMember('Float sensorRatio = 1.5', text='The percentage increase in signal radius when signal amplifier is active', group=GROUPS.Logic, caption='Signal Radius')
    typeDef.AddMember('Float mccSensorRatio = 1.5', text='The enemy mcc sensor radius when signal amplifier is active', group=GROUPS.Logic, caption='MCC Sensor Radius')
    typeDef = ax2.CreateType('DustSignalAmplifier', standalone=True)
    typeDef.AddMember('SignalAmplifierProperty mAmplifierProp', uemodifier='repnotify', caption='Amplifier Properties')
    typeDef = ax2.CreateType('ECCMProperty', standalone=False)
    typeDef.AddMember('Int padding', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED))
    typeDef = ax2.CreateType('DustECCM', standalone=True)
    typeDef.AddMember('ECCMProperty mECCMProp', uemodifier='repnotify', caption='ECCM Properties')
    typeDef = ax2.CreateType('ShieldGeneratorProperty', standalone=False)
    typeDef.AddMember('Int padding', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED))
    typeDef = ax2.CreateType('DustShieldGenerator', standalone=True)
    typeDef.AddMember('ShieldGeneratorProperty mShieldGeneratorProp', uemodifier='repnotify', caption='Shield Generator Properties')
    typeDef = ax2.CreateType('SphereGeneratorProperty', standalone=False)
    typeDef.AddMember('Int padding', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED))
    typeDef = ax2.CreateType('DustSphereGenerator', standalone=True)
    typeDef.AddMember('SphereGeneratorProperty mSphereGeneratorProp', uemodifier='repnotify', caption='Sphere Generator Properties')
    typeDef = ax2.CreateType('SupplyDepotProperty', standalone=False)
    typeDef.AddMember('TypeReference mHealingActorType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustHealingActor', text='The healing actor for this supply depot', group=GROUPS.Logic, caption='Healing Properties')
    typeDef = ax2.CreateType('DustSupplyDepot', standalone=True)
    typeDef.AddMember('SupplyDepotProperty mSupplyDepotProp', caption='Supply Depot Properties')
    typeDef = ax2.CreateType('CapacitorProperty', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float coveredRatio', text='Functional radius of capacitor', group=GROUPS.Logic, caption='Functional Radius')
    typeDef.AddMember('Float sensorRatio', text='Signal radius of capacitor', group=GROUPS.Logic, caption='Signal Radius')
    typeDef.AddMember('Float mccSensorRadius', text='Signal radius of capacitor for MCC detection', group=GROUPS.Logic, caption='MCC Sensor Radius')
    typeDef.AddMember('Float targetRefreshInterval', text='Target update frequency of capacitor', group=GROUPS.Combat, caption='Target Refresh Interval')
    typeDef = ax2.CreateType('DustCapacitor', standalone=True)
    typeDef.AddMember('CapacitorProperty mCapacitorProp', uemodifier='repnotify', caption='Capacitor Properties')
    typeDef = ax2.CreateType('DustCloneReserveUnit', standalone=True)
    typeDef.AddMember('Int mCloneReservePoolSize = 100', text='The max num of Clone Reserve in the clone reserve pool', group=GROUPS.Logic, caption='Clone Reserve Pool Size')



def PopulateVehicleSimBase(ax2):
    typeDef = ax2.CreateType('DustVehicleSimBaseProperty', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Float wheelSuspensionStiffness', caption='Wheel Suspension Stiffness')
    typeDef.AddMember('Float wheelSuspensionDamping', caption='Wheel Suspension Damping')
    typeDef.AddMember('Float wheelSuspensionBias', caption='Wheel Suspension Bias')
    typeDef.AddMember('Float wheelLongExtremumSlip', caption='Wheel Long Extremum Slip')
    typeDef.AddMember('Float wheelLongExtremumValue', caption='Wheel Long Extremum Value')
    typeDef.AddMember('Float wheelLongAsymptoteSlip', caption='Wheel Long Asymptote Slip')
    typeDef.AddMember('Float wheelLongAsymptoteValue', caption='Wheel Long Asymptote Value')
    typeDef.AddMember('Float wheelLatExtremumSlip', caption='Wheel Lat Extremum Slip')
    typeDef.AddMember('Float wheelLatExtremumValue', caption='Wheel Lat Extremum Value')
    typeDef.AddMember('Float wheelLatAsymptoteSlip', caption='Wheel Lat Asymptote Slip')
    typeDef.AddMember('Float wheelLatAsymptoteValue', caption='Wheel Lat Asymptote Value')
    typeDef.AddMember('Float wheelInertia', caption='Wheel Inertia')
    typeDef.AddMember('Bool wheelSpeedOverride', caption='Wheel Speed Override')
    typeDef.AddMember('Bool clampedFrictionModel', caption='Clamped Friction Model')
    typeDef.AddMember('Float stopBrakeTorque', text="Applied to the vehicle when it's not being driven, to force a stop", caption='Stop Brake Torque')
    typeDef.AddMember('Float autoBrakeFactor', text='The fraction of brake to apply when the player is giving any throttle to the car', caption='Auto Brake Factor')
    typeDef = ax2.CreateType('DustVehicleSimBase', standalone=True)
    typeDef.AddMember('DustVehicleSimBaseProperty mSimBasePropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated SimBase Properties')
    typeDef.AddMember('DustVehicleSimBaseProperty mSimBasePropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default SimBase Properties')
    typeDef.AddMember('DustVehicleSimBaseProperty mSimBaseProp', uemodifier='repnotify', caption='Vehicle Sim Base Properties')
    typeDef.AddMember('InterpCurveFloat mEngineRPMCurve', text='Translates forward velocity into an EngineRPM that can be used for effects and sounds', uemodifier='norep', group=GROUPS.Physics, caption='Engine RPM Curve')
    typeDef.AddMember('String mUE3Class', text='The UE3 object class used to create this sim object', group=GROUPS.Physics, caption='UE3 Class')



def PopulateVehicleSimCar(ax2):
    typeDef = ax2.CreateType('DustVehicleSimCarProperty', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Float chassisTorqueScale', text='How much torque to apply to chassis based on acceleration', caption='Chassis Torque Scale')
    typeDef.AddMember('Float steerSpeed', text='degrees per second', caption='Steer Speed')
    typeDef.AddMember('Float reverseThrottle', text='How much throttle when in reverse', caption='Reverse Throttle')
    typeDef.AddMember('Float stopThreshold', text='Speed at which the vehicle will stop simulating', caption='Stop Threshold')
    typeDef.AddMember('Float jumpDamping', text='Extra downward force when flying in sky', caption='Jump Damping')
    typeDef.AddMember('Float lsdFactor', text='Limited slip differential: 0.60 would mean 60% of the power is routed through the LSD and 40% is divided evenly', caption='LSD Factor')
    typeDef.AddMember('Float steeringReductionFactor', text='Steering reduction factor when have wheels in air (to make vehicles easier to control)', caption='Steering Reduction Factor')
    typeDef.AddMember('Float steeringReductionRampUpRate', text='Steering reduction ramp up rate (1/this = time to full steering reduction).  ramps down at half this rate', caption='Steering Reduction Ramp Up Rate')
    typeDef.AddMember('Int numWheelsForFullSteering', text='How many wheels must be on ground in order to avoid steering reduction', caption='Num Wheels For Full Steering')
    typeDef.AddMember('Float steeringReductionSpeed', text='Speed at which steering reduction is in full effect', caption='Steering ReductionSpeed')
    typeDef.AddMember('Float steeringReductionMinSpeed', text='Speed at which steering reduction starts', caption='Steering Reduction Min Speed')
    typeDef.AddMember('Float minHardTurnSpeed', text='Minimum speed before torque reduction sets in when turning hard', caption='Min Hard Turn Speed')
    typeDef.AddMember('Float hardTurnMotorTorque', text="Motor torque applied during hard turns (don't want to accelerate through hard turns", caption='Hard Turn Motor Torque')
    typeDef.AddMember('Bool autoHandbrake', text='Whether should auto-handbrake when wheels on one side are off the ground', caption='Auto Handbrake')
    typeDef.AddMember('Float consoleHardTurnGripFactor', text='When turning hard on console, reduce lateral grip to enhance sliding around', caption='Console Hard Turn Grip Factor')
    typeDef = ax2.CreateType('DustVehicleSimCar', standalone=True)
    typeDef.AddMember('DustVehicleSimCarProperty mSimCarPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated SimCar Properties')
    typeDef.AddMember('DustVehicleSimCarProperty mSimCarPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default SimCar Properties')
    typeDef.AddMember('DustVehicleSimCarProperty mSimCarProp', uemodifier='repnotify', caption='Vehicle Sim Car Properties')
    typeDef.AddMember('InterpCurveFloat mMaxSteerAngleCurve', text='Degrees based on velocity', uemodifier='norep', group=GROUPS.Physics, caption='Max Steer Angle Curve')
    typeDef.AddMember('InterpCurveFloat mTorqueVSpeedCurve', text='Torque vs Speed curve: This curve approximates a transmission as opposed to actually simulating one as in SVehicleSimTransmission', uemodifier='norep', group=GROUPS.Physics, caption='Torque V Speed Curve')



def PopulateVehicleSimAir(ax2):
    typeDef = ax2.CreateType('DustVehicleSimAirProperty', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Float maxSpeedFighter')
    typeDef.AddMember('Float maxThrustForceFighter')
    typeDef.AddMember('Float maxRiseForceFighter')
    typeDef.AddMember('FighterRotatioParam fighterPitchParam')
    typeDef.AddMember('FighterRotatioParam fighterYawParam')
    typeDef.AddMember('FighterRotatioParam fighterRollParam')
    typeDef.AddMember('FighterRotatioParam localRollParam')
    typeDef.AddMember('FighterRotatioParam localRollReturnParam')
    typeDef.AddMember('Float autoBalancePitchLimitFighter')
    typeDef.AddMember('Float autoBalanceRollLimitFighter')
    typeDef.AddMember('Float longDampingFighter')
    typeDef.AddMember('Float latDampingFighter')
    typeDef.AddMember('Float verticalDampingFighterUp')
    typeDef.AddMember('Float verticalDampingFighterDown')
    typeDef.AddMember('Float pitchRestoreDPSFighter')
    typeDef.AddMember('Float rollRestoreDPSFighter')
    typeDef.AddMember('Float localRollScaleFighter')
    typeDef.AddMember('Float maxSpeedChopper')
    typeDef.AddMember('Float maxThrustForceChopper')
    typeDef.AddMember('Float maxStrafeForceChopper')
    typeDef.AddMember('Float maxYawStrafeForceChopper')
    typeDef.AddMember('Float maxRiseForceChopper')
    typeDef.AddMember('Float maxDescentForceChopper')
    typeDef.AddMember('Float longDampingChopper')
    typeDef.AddMember('Float latDampingChopper')
    typeDef.AddMember('Float verticalDampingChopperUp')
    typeDef.AddMember('Float verticalDampingChopperDown')
    typeDef.AddMember('FighterRotatioParam chopperThrustPitchParam')
    typeDef.AddMember('FighterRotatioParam chopperStrafeRollParam')
    typeDef.AddMember('FighterRotatioParam chopperYawRollParam')
    typeDef.AddMember('FighterRotatioParam chopperYawParam')
    typeDef.AddMember('Float chopperYawSpeedDamping')
    typeDef.AddMember('Float pitchRevertSpeedScale')
    typeDef.AddMember('Float rollRevertSpeedScale')
    typeDef.AddMember('Float chopperMaxRandomForce')
    typeDef.AddMember('Float chopperRandomForceInterval')
    typeDef = ax2.CreateType('DustVehicleSimAir', standalone=True)
    typeDef.AddMember('DustVehicleSimAirProperty mSimAirPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated SimAir Properties')
    typeDef.AddMember('DustVehicleSimAirProperty mSimAirPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default SimAir Properties')
    typeDef.AddMember('DustVehicleSimAirProperty mSimAirProp', uemodifier='repnotify', caption='Vehicle Sim Air Properties')
    typeDef.AddMember('FighterRotatioParamSet mFighterPitchParamSet', uemodifier='norep', group=GROUPS.Physics)
    typeDef.AddMember('FighterRotatioParamSet mFighterYawParamSet', uemodifier='norep', group=GROUPS.Physics)
    typeDef.AddMember('FighterRotatioParamSet mFighterRollParamSet', uemodifier='norep', group=GROUPS.Physics)
    typeDef.AddMember('FighterRotatioParamSet mChopperThrustPitchParamSet', uemodifier='norep', group=GROUPS.Physics)
    typeDef.AddMember('FighterRotatioParamSet mChopperStrafeRollParamSet', uemodifier='norep', group=GROUPS.Physics)
    typeDef.AddMember('FighterRotatioParamSet mChopperYawRollParamSet', uemodifier='norep', group=GROUPS.Physics)
    typeDef.AddMember('FighterRotatioParamSet mChopperYawParamSet', uemodifier='norep', group=GROUPS.Physics)



def PopulateVehicleSimAircraft(ax2):
    typeDef = ax2.CreateType('DustVehicleSimAircraftProperty', standalone=False)
    typeDef.AddMember('SmoothControlParam mChopperModeRollControlParam', group=GROUPS.Physics)
    typeDef.AddMember('SmoothControlParam mChopperModePitchControlParam', group=GROUPS.Physics)
    typeDef.AddMember('SmoothControlParam mChopperModeYawControlParam', group=GROUPS.Physics)
    typeDef.AddMember('SmoothControlParam mChopperModeLookupControlParam', group=GROUPS.Physics)
    typeDef.AddMember('SmoothControlParam mFighterModeRollControlParam', group=GROUPS.Physics)
    typeDef.AddMember('SmoothControlParam mFighterModePitchControlParam', group=GROUPS.Physics)
    typeDef.AddMember('SmoothControlParam mFighterModeYawControlParam', group=GROUPS.Physics)
    typeDef.AddMember('SmoothControlParam mFighterModeLookupControlParam', group=GROUPS.Physics)
    typeDef = ax2.CreateType('DustVehicleSimAircraft', standalone=True)
    typeDef.AddMember('DustVehicleSimAircraftProperty mSimAircraftPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated SimAircraft Properties')
    typeDef.AddMember('DustVehicleSimAircraftProperty mSimAircraftPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default SimAircraft Properties')
    typeDef.AddMember('DustVehicleSimAircraftProperty mSimAircraftProp', uemodifier='repnotify', caption='Vehicle Sim Aircraft Properties')



def PopulateVehicleSimHover(ax2):
    typeDef = ax2.CreateType('DustVehicleSimHoverProperty', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Bool disableWheelsWhenOff', caption='Disable Wheels When Off')
    typeDef.AddMember('Bool repulsorCollisionEnabled', caption='Repulsor Collision Enabled')
    typeDef.AddMember('Bool canClimbSlopes', caption='Can Climb Slopes')
    typeDef.AddMember('Bool unPoweredDriving', caption='Unpowered Driving')
    typeDef.AddMember('FighterRotatioParam hoverRollParam', caption='Hover Roll')
    typeDef.AddMember('FighterRotatioParam hoverYawParam', caption='Hover Yaw')
    typeDef.AddMember('Float hoverYawSpeedDamping', caption='Hover Yaw Speed Damping')
    typeDef.AddMember('Float rollRevertSpeedScale', text='Revert roll degree factor which will affect roll degree recovery speed', caption='Roll Revert Speed Scale')
    typeDef.AddMember('Float rollDegreeFactorToStartYaw', text='To delay yaw rotation after leaning, only start yaw rotation after roll degree > m_HoverRollParam.m_MaxRotation * m_RollDegreeFactorToStartYaw', caption='Roll Degree Factor To Start Yaw')
    typeDef.AddMember('Float initialLiftForce', text='Force used to lift up the vehicle if bDisableWheelsWhenOff is true', caption='Initial Lift Force')
    typeDef.AddMember('Float maxThrustForce', caption='Max Thrust Force')
    typeDef.AddMember('Float maxReverseForce', caption='Max Reverse Force')
    typeDef.AddMember('Float longDamping', caption='Long Damping')
    typeDef.AddMember('Float latDamping', caption='Lat Damping')
    typeDef.AddMember('Float directionChangeForce', caption='Direction Change Force')
    typeDef.AddMember('Float maxRiseForce', caption='Max Rise Force')
    typeDef.AddMember('Float upDamping', caption='Up Damping')
    typeDef.AddMember('Float turnTorqueFactor', caption='Turn Torque Factor')
    typeDef.AddMember('Float turnTorqueMax', caption='Max Turn Torque')
    typeDef.AddMember('Float turnDamping', caption='Turn Damping')
    typeDef.AddMember('Float maxYawRate', caption='Max Yaw Rate')
    typeDef.AddMember('Float pitchLimitMax', caption='Max Pitch Limit')
    typeDef.AddMember('Float pitchLimitMin', caption='Min Pitch Limit')
    typeDef.AddMember('Float pitchLimitStiffness', caption='Pitch Limit Stiffness')
    typeDef.AddMember('Float pitchLimitVelDamping', caption='Pitch Limit VelDamping')
    typeDef.AddMember('Float pitchTorqueFactor', caption='Pitch Torque Factor')
    typeDef.AddMember('Float pitchTorqueMax', caption='Pitch Torque Max')
    typeDef.AddMember('Float pitchDamping', caption='Pitch Damping')
    typeDef.AddMember('Float pitchForwardingFactor', caption='Pitch Forwarding Factor')
    typeDef.AddMember('Float pitchForwardingAngleFactor', caption='Pitch Forwarding Angle Factor')
    typeDef.AddMember('Float rollTorqueTurnFactor', caption='Roll Torque Turn Factor')
    typeDef.AddMember('Float rollTorqueStrafeFactor', caption='Roll Torque Strafe Factor')
    typeDef.AddMember('Float rollTorqueMax', caption='Max Roll Torque')
    typeDef.AddMember('Float rollDamping', caption='Roll Damping')
    typeDef.AddMember('Float stopThreshold', caption='Stop Threshold')
    typeDef.AddMember('Float maxRandForce', caption='Max Rand Force')
    typeDef.AddMember('Float randForceInterval', caption='Rand Force Interval')
    typeDef.AddMember('Bool allowZThrust', caption='Allow ZThrust')
    typeDef.AddMember('Bool fullThrustOnDirectionChange', caption='Full Thrust On Direction Change')
    typeDef.AddMember('Bool strafeAffectsTurnDamping', caption='Strafe Affects Turn Damping')
    typeDef.AddMember('Float strafeTurnDamping', caption='Strafe Turn Damping')
    typeDef.AddMember('Float pitchViewCorrelation', caption='Pitch View Correlation')
    typeDef.AddMember('Bool stabilizeStops', caption='Stabilize Stops')
    typeDef.AddMember('Float stabilizationForceMultiplier', caption='Stabilize Force Multiplier')
    typeDef.AddMember('Bool useFullStickStrenthForThrottle', caption='Use FullStick Strength For Throttle')
    typeDef.AddMember('Bool canHaveNegativeRise', caption='Can Have Negative Rise')
    typeDef.AddMember('Float reverseSteerSpeedDamping', caption='ReverseSteer Speed Damping')
    typeDef = ax2.CreateType('DustVehicleSimHover', standalone=True)
    typeDef.AddMember('DustVehicleSimHoverProperty mSimHoverPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Evaluated SimHover Properties')
    typeDef.AddMember('DustVehicleSimHoverProperty mSimHoverPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default SimHover Properties')
    typeDef.AddMember('DustVehicleSimHoverProperty mSimHoverProp', uemodifier='repnotify', caption='Vehicle Sim Hover Properties')
    typeDef.AddMember('InterpCurveFloat mThrustVSpeedCurve', uemodifier='norep', group=GROUPS.Physics)



def PopulateVehicleSimTank(ax2):
    typeDef = ax2.CreateType('DustVehicleSimTrackProperty', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Float maxEngineTorque', caption='Max Engine Torque')
    typeDef.AddMember('Float engineDamping', caption='Engine Damping')
    typeDef.AddMember('Float insideTrackTorqueFactor', caption='Inside Track Torque Factor')
    typeDef.AddMember('Float steeringLatStiffnessFactor', caption='Steering Lat Stiffness Factor')
    typeDef.AddMember('Float turnInPlaceThrottle', caption='TurnInPlace Throttle')
    typeDef.AddMember('Float turnMaxGripReduction', text='Maximum amount we will reduce lateral grip', caption='Turn Max Grip Reduction')
    typeDef.AddMember('Float turnGripScaleRate', text='How quickly grip drops off based on difference in track speed', caption='Turn Grip Scale Rate')
    typeDef.AddMember('Bool turnInPlaceOnSteer', text='If true, tank will turn in place when just steering is applied', caption='Turn In Place On Steer')
    typeDef.AddMember('Float frontalCollisionGripFactor', text='When driving into something, reduce friction on the wheels', caption='Front Collision Grip Factor')
    typeDef.AddMember('Float equaliseTrackSpeedTorque', text='When no steering - torque applied to get tracks at same speed more quickly', caption='Equalize Track Speed Torque')
    typeDef = ax2.CreateType('DustVehicleSimTank', standalone=True)
    typeDef.AddMember('DustVehicleSimTrackProperty mSimTrackPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('DustVehicleSimTrackProperty mSimTrackPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('DustVehicleSimTrackProperty mSimTrackProp', uemodifier='repnotify', caption='Vehicle Sim Track Properties')



def PopulateVehicleSimHeavyTank(ax2):
    typeDef = ax2.CreateType('DustVehicleSimHeavyTankProperty', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Float maxTurningSpeed', caption='Max Turning Speed')
    typeDef.AddMember('Float maxTurningSpotSpeed', caption='Max Turning Spot Speed')
    typeDef.AddMember('Float engineStartTime', caption='Engine Start Time')
    typeDef.AddMember('Float controlTurnSpotThreshold', caption='Control TurnSpot Threshold')
    typeDef.AddMember('Float controlTurnThreshold', caption='Control Turn Threshold')
    typeDef.AddMember('Float brakeFrictionTorque', caption='Brake Friction Torque')
    typeDef = ax2.CreateType('DustVehicleSimHeavyTank', standalone=True)
    typeDef.AddMember('DustVehicleSimHeavyTankProperty mSimHeavyTankPropertyEvaluated', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='repnotify', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('DustVehicleSimHeavyTankProperty mSimHeavyTankPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('DustVehicleSimHeavyTankProperty mSimHeavyTankProp', uemodifier='repnotify', caption='Vehicle Sim Heavy Tank Properties')



def PopulateWeapon(ax2):
    typeDef = ax2.CreateType('DustStickyReticuleInfo', standalone=False, group=GROUPS.Combat)
    typeDef.AddMember('Bool enabled = False', text='Whether sticky reticule is enabled', caption='Sticky Reticule Enabled')
    typeDef.AddMember('Float yawScale = 1', modifyFlag=MODIFY_REMOVED, text='Scale applied to the yaw when the weapon rotates', caption='Yaw Scale')
    typeDef.AddMember('Float pitchScale = 1', modifyFlag=MODIFY_REMOVED, text='Scale applied to the pitch when the weapon rotates', caption='Pitch Scale')
    typeDef.AddMember('Float yawFollowingSpeed = 0', text='', caption='Yaw Following Speed')
    typeDef.AddMember('Float strafeSpeedScale = 1', text='', caption='Strafe Speed Scale')
    typeDef.AddMember('Float strafeRotationScale = 1', text='', caption='Strafe Rotation Scale', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float targetWidthScale = 1', text='', caption='Target Width Scale')
    typeDef.AddMember('Float targetHeightScale = 1', text='', caption='Target Height Scale')
    typeDef.AddMember('Float targetWidthScaleCamRotation = 1', modifyFlag=MODIFY_REMOVED, text='', caption='Target Width Scale affecting the camera rotation ')
    typeDef.AddMember('Float targetHeightScaleCamRotation = 1', modifyFlag=MODIFY_REMOVED, text='', caption='Target Height Scale affecting the camera rotation')
    typeDef.AddMember('Float maxRangeCamRotation = 5000', modifyFlag=MODIFY_REMOVED, text='', caption='the max range for the camera rotation effect')
    typeDef.AddMember('Float maxRangeYawFollowing = 5000', text='', caption='the max range for the yaw following effect')
    typeDef = ax2.CreateType('DustWeaponFireModeInfo', standalone=False, group=GROUPS.Combat, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Bool canZoom = True', text='Whether this firemode support zooming', caption='Can Zoom')
    typeDef.AddMember('Int maxAmmoCount = 100', text='The max amount of ammo can be carried by the player', caption='Max Ammo')
    typeDef.AddMember('Int magazineSize = 10', text='The max amount of bullets in one magazine', caption='Max Clip Size')
    typeDef.AddMember('Int shotCost = 1', text='How many bullets to use for one shot', caption='Shot Cost')
    typeDef.AddMember('Float minReloadPercentage = 0.5', text='The min amount of reload time that has to pass before you can switch', caption='Min Reload Time Before Switch')
    typeDef.AddMember('Float zoomFOV = 50', text='The FOV in zoom mode', caption='Zoom FOV')
    typeDef.AddMember('Float zoomSpeed = 10', text='The speed of zooming', caption='Zoom Speed')
    typeDef.AddMember('Float zoomCameraRotationScale = 0.6', modifyFlag=MODIFY_REMOVED, text='Multiplier applied to the camera rotation in zoom mode', caption='Zoom Camera Rotation Scale')
    typeDef.AddMember('Bool hideWeaponWhenZoom = False', text='', caption='Hide Weapon When Zoom')
    typeDef.AddMember('Bool playCameraShake = True', modifyFlag=MODIFY_REMOVED, text='Whether to play camera shake when firing', caption='Play Camera Shake')
    typeDef.AddMember('Float reloadTime = 2', text='The length of the reload sequence', caption='Reload Speed')
    typeDef.AddMember('WeaponDamage instantHitDamage', text='The damage of instant hit, if applicable', caption='Instant Hit Damage')
    typeDef.AddMember('WeaponDispersion dispersionInfo', text='The dispersion info', caption='Dispersion Info')
    typeDef.AddMember('WeaponDispersion zoomDispersionInfo', text='The dispersion info in zoom mode', caption='Zoom Dispersion')
    typeDef.AddMember('TypeReference projectileType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustProjectile', text='The type of the projectile in this fire mode', caption='Projectile Type')
    typeDef.AddMember('Float fireInterval = 1', text='The time between 2 shots', caption='Fire Interval')
    typeDef.AddMember('Bool enabled = True', text='Whether this fire mode is enabled or not', caption='Fire Mode Enabled')
    typeDef.AddMember('Bool needZoomHUD = False', text='Whether this weapon needs HUD in zoom mode', caption='Need Zoom HUD')
    typeDef.AddMember('Bool singleShot = False', text='Whether the player needs to pull the trigger for every shot', caption='Automatic Fire')
    typeDef.AddMember('Int lowAmmoThreshold = 0', text='Below which the ammo count is considered low', caption='Low Ammo Threshold')
    typeDef.AddMember('Float maxRange = 20000', text='The max range for this fire mode, in unreal units(100 unreal unit=1 meter). note that this only works for non-projectile weapon', caption='Max Range')
    typeDef.AddMember('Float effectiveRangeMultiplier = 1', text="The multiplier on top of the max range, used by the AI to calculate this weapons's effective range", caption='Effective Range Multiplier')
    typeDef.AddMember('Float instantHitMomentum = 100', text='momentum transfer scaling for instant hit damage', caption='Instant Hit Momentum')
    typeDef.AddMember('Float normalStopFiringTime = 0', text='length of time to stay in state WeaponStopFiring in normal mode', caption='Stop firing time in normal mode')
    typeDef.AddMember('Float zoomedStopFiringTime = 0', text='length of time to stay in state WeaponStopFiring in zoom-in mode', caption='Stop firing time in zoomed mode')
    typeDef.AddMember('Vector firingOffset', text='the firing location adjustment from the view location', caption='Firing offset(in unreal units)')
    typeDef = ax2.CreateType('DustWeapon', standalone=True)
    typeDef.AddMember('DustStickyReticuleInfo mSRInfo0', text='the sticky reticule info for fire mode 0', uemodifier='repnotify', caption='Sticky Reticule Info 0')
    typeDef.AddMember('DustStickyReticuleInfo mSRInfo1', text='the sticky reticule info for fire mode 1', uemodifier='repnotify', caption='Sticky Reticule Info 1')
    typeDef.AddMember('DustWeaponFireModeInfo mFireMode0', text='the fire mode info for fire mode 0', uemodifier='repnotify', caption='Weapon Fire Mode 0')
    typeDef.AddMember('DustWeaponFireModeInfo mFireMode1', text='the fire mode info for fire mode 1', uemodifier='repnotify', caption='Weapon Fire Mode 1')
    typeDef.AddMember('WeaponRecoil mRecoilInfo0', text='Weapon recoil info for fire mode 0', uemodifier='repnotify', caption='Weapon Recoil Info 0')
    typeDef.AddMember('WeaponRecoil mRecoilInfoZoomed0', text='Weapon recoil info for fire mode 0 (in zoomed mode)', uemodifier='repnotify', caption='Zoomed Weapon Recoil Info 0')
    typeDef.AddMember('WeaponRecoil mRecoilInfo1', text='Weapon recoil info for fire mode 1', uemodifier='repnotify', caption='Weapon Recoil Info 1')
    typeDef.AddMember('WeaponRecoil mRecoilInfoZoomed1', text='Weapon recoil info for fire mode 1 (in zoomed mode)', uemodifier='repnotify', caption='Zoomed Weapon Recoil Info 1')
    typeDef.AddMember('WeaponCrosshair mCrosshairInfo0', text='Weapon crosshair info for fire mode 0', uemodifier='repnotify', caption='Crosshair Info 0')
    typeDef.AddMember('WeaponCrosshair mCrosshairInfo1', text='Weapon crosshair info for fire mode 1', uemodifier='repnotify', caption='Crosshair Info 1')
    typeDef.AddMember('String mCrosshairType0', text='the crosshair type for fire mode 0', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED), caption='Crosshair Type 0')
    typeDef.AddMember('String mCrosshairType1', text='the crosshair type for fire mode 1', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED), caption='Crosshair Type 1')
    typeDef.AddMember('String mCrosshairTypeZoomed0', text='the crosshair type for fire mode 0 (in zoomed mode)', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED), caption='Zoomed Crosshair Type 0')
    typeDef.AddMember('String mCrosshairTypeZoomed1', text='the crosshair type for fire mode 1 (in zoomed mode)', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED), caption='Zoomed Crosshair Type 1')
    typeDef.AddMember('TypeReference mEffectorType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='WeaponEffector', text='the effector type for this weapon', group=GROUPS.Content, caption='Effector Type')
    typeDef.AddMember('CurveReference mDamageCurve0', text='the damage fall off curve for fire mode0', group=GROUPS.Content, caption='Fire Mode 0 Instant Hit Damage Curve')
    typeDef.AddMember('CurveReference mDamageCurve1', text='the damage fall off curve for fire mode1', group=GROUPS.Content, caption='Fire Mode 1 Instant Hit Damage Curve')
    typeDef.AddMember('WeaponAimFriction mAimFrictionInfo0', group=GROUPS.Combat)
    typeDef.AddMember('WeaponAimFriction mAimFrictionInfo1', group=GROUPS.Combat)
    typeDef.AddMember('WeaponAimAdhesion mAimAdhesionInfo0', group=GROUPS.Combat)
    typeDef.AddMember('WeaponAimAdhesion mAimAdhesionInfo1', group=GROUPS.Combat)
    typeDef.AddMember('WeaponCameraRotationScale mCamRotationScale0', group=GROUPS.Content)
    typeDef.AddMember('WeaponCameraRotationScale mCamRotationScale1', group=GROUPS.Content)



def PopulateHandheldWeapon(ax2):
    typeDef = ax2.CreateType('AutoAimInfo', standalone=False)
    typeDef.AddMember('Float targetWidthScale = 1', modifyFlag=MODIFY_REMOVED, caption='the scale applied to the width of the target')
    typeDef.AddMember('Float targetHeightScale = 1', modifyFlag=MODIFY_REMOVED, caption='the scale applied to the height of the target')
    typeDef.AddMember('Float maxDistance = 10000', caption='the max distance beyond which the auto-aim will not take effect')
    typeDef.AddMember('Bool enabled = False', caption='whether auto-aim is enabled for this fire mode')
    typeDef.AddMember('Float angularDistAtOrigin = 5', caption='angular distance(in degrees) between target and aim point, at 0')
    typeDef.AddMember('Float angularDistAtMaxRange = 3', caption='angular distance(in degrees) between target and aim point, max range')
    typeDef.AddMember('Float camRotationSpeed = 20', caption='the camera rotation speed when auto-aiming, in degree per sec')
    typeDef = ax2.CreateType('DustHandheldWeapon', standalone=True)
    typeDef.AddMember('Int weaponSwitchIcon0', group=GROUPS.Content, caption='Weapon Switch Icon 0', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Int weaponSwitchIcon1', group=GROUPS.Content, caption='Weapon Switch Icon 1')
    typeDef.AddMember('WeaponPlacementInfo mNormalPlacement', group=GROUPS.Content, caption='placement info in normal mode')
    typeDef.AddMember('WeaponPlacementInfo mZoomPlacement', group=GROUPS.Content, caption='placement info in zoom mode')
    typeDef.AddMember('WeaponDOFInfo mDOFInfo0', group=GROUPS.Content, caption='Depth-Of-Field info for fire mode 0')
    typeDef.AddMember('WeaponDOFInfo mDOFInfo1', group=GROUPS.Content, caption='Depth-Of-Field info for fire mode 1')
    typeDef.AddMember('WeaponSpring mWeaponSpring', group=GROUPS.Content, modifyFlag=MODIFY_REMOVED, caption='Weapon Spring')
    typeDef.AddMember('WeaponSpring mNormalWeaponSpring', group=GROUPS.Content, caption='Weapon Spring in normal mode')
    typeDef.AddMember('WeaponSpring mZoomWeaponSpring', group=GROUPS.Content, caption='Weapon Spring in zoom mode')
    typeDef.AddMember('Float mCustomFOV = -1', group=GROUPS.Content, caption='custom fov')
    typeDef.AddMember('AutoAimInfo mAutoAimProp0', group=GROUPS.Combat, caption='the auto aim prop for fire mode 0')



def PopulateProjectile(ax2):
    typeDef = ax2.CreateType('DustProjectileProperty', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float initSpeed', text='The initial speed of the projectile', group=GROUPS.Physics, caption='Initial Speed')
    typeDef.AddMember('Float maxSpeed', text='The max speed of the projectile', group=GROUPS.Physics, caption='Max Speed')
    typeDef.AddMember('Float accelRate', text='The accel rate of the projectile', group=GROUPS.Physics, caption='Acceleration Rate')
    typeDef.AddMember('Float damageDecay', text='The damage decay per second', group=GROUPS.Combat, caption='Damage Decay')
    typeDef.AddMember('Float minimumDamage', text='The minimum damage if the projectile can hit something', group=GROUPS.Combat, caption='Min Damage')
    typeDef.AddMember('Float projectileLifeSpan', text='The life span of the projectile, in second', group=GROUPS.Logic, caption='Lifespan')
    typeDef.AddMember('TypeReference explosionType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='ExplosionContent', text='The type id used to spawn explosion', group=GROUPS.Content, caption='Explosion Type ID')
    typeDef.AddMember('WeaponDamage splashDamage', text='The splash damage of this projectile', caption='Splash Damage')
    typeDef.AddMember('WeaponDamage directHitDamage', text='The damage of this projectile when it hits something directly', caption='Direct Hit Damage')
    typeDef.AddMember('Float damageRadius', text='The max damage radius of the projectile', group=GROUPS.Combat, caption='Damage Radius')
    typeDef.AddMember('Float gravityScale = 1', text='The scale applied on the default gravity', group=GROUPS.Physics, caption='Gravity Scale')
    typeDef.AddMember('Bool explodeByTouch', text='If true, the projectile will explode when hit ground/wall', group=GROUPS.Physics, caption='Explode On Contact')
    typeDef.AddMember('Float mTurnOnTime', text='The animation to turn on the projectile', group=GROUPS.Physics, caption='Activation Time')
    typeDef = ax2.CreateType('DustProjectile', standalone=True)
    typeDef.AddMember('DustProjectileProperty mDustProjectilePropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default Projectile Properties')
    typeDef.AddMember('DustProjectileProperty mProjProp', uemodifier='repnotify', caption='Projectile Properties')
    typeDef.AddMember('ContentReference mProjFlightTemplate', group=GROUPS.Content, caption='Flight Effects', attributeFlag=((DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET) ^ ATTRIB_FLAGS.EXPORTED))
    typeDef.AddMember('Float mFlightEffectScale = 1', group=GROUPS.Content, caption='Flight Effect Scale', text='Flight Effect Scale')
    typeDef.AddMember('Float mMeshScale = 1', group=GROUPS.Content, caption='Projectile Mesh Scale', text='Projectile Mesh Scale')
    typeDef.AddMember('CurveReference mSplashDamage', text='the curve used to calculate the splash damage based on distance to the center of the explosion', group=GROUPS.Combat, caption='Splash Damage Curve')
    typeDef.AddMember('TaggedSound mSounds', group=GROUPS.Content, text='sounds carried by the projectile', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))



def PopulateOrbitalStrike(ax2):
    typeDef = ax2.CreateType('EDustPlayerRole', Enumerate, forUE3=True)
    typeDef.AddElement('PROLE_Infantry')
    typeDef.AddElement('PROLE_SLeader')
    typeDef.AddElement('PROLE_Commander')
    typeDef.AddElement('PROLE_Doodler')
    typeDef.AddElement('PROLE_Unknown')
    typeDef = ax2.CreateType('DustOffMapSupportBase', standalone=True)
    typeDef.AddMember('Int mWarPointCost', text='The warpoint cost of the offmap support', group=GROUPS.Content, caption='Warpoint Cost')
    typeDef.AddMember('Float mWarmUpTime', text='Time for the offmap support to take effect after it is activated', group=GROUPS.Content, caption='Warmup Time')
    typeDef.AddMember('Float mCooldownTime', text='Time for the next offmap support to be ready', group=GROUPS.Content, caption='Cooldown Time')
    typeDef.AddMember('Float mLifeTime', text='Lifespan of DustOffMapSupportBase', group=GROUPS.Content, caption='Lifetime')
    typeDef.AddMember('EDustPlayerRole mAllowedRoles', text='Roles that could use this offmap support(Infantry/Squad leader/Commander)', group=GROUPS.Content, caption='Allowed Role', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef = ax2.CreateType('DustOMSOrbitalStrike', standalone=True)
    typeDef.AddMember('TypeReference mProjectileType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustProjectile', group=GROUPS.Content, text='The type of the projectile for orbital strike', caption='Projectile Type')
    typeDef.AddMember('Float mFireInterval', text='The interval between 2 projectile firing', group=GROUPS.Content, caption='Fire Interval')
    typeDef.AddMember('Float mImpactRadius', text='The radius of area to impact', group=GROUPS.Content, caption='Impact radius')
    typeDef.AddMember('Float mSpawnHeight', text="The height of projectiles' spawning location", group=GROUPS.Content, caption='Spawn Height')
    typeDef.AddMember('Int mTotalProjectileCount', text='The number of projectiles to be fired for each orbital strike', group=GROUPS.Content, caption='Total Projectile Count')
    typeDef.AddMember('ContentReference mStrikeParticleSystem', text='The Fx to be played at the beginning of the strike', group=GROUPS.Content, caption='Strike Effects', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED))
    typeDef.AddMember('ContentReference mProjectileParticleSystem', text='The Fx to be played for each projectile', group=GROUPS.Content, caption='Projectile Effects', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED))
    typeDef.AddMember('TaggedSound mObitalStrikeSounds', group=GROUPS.Content, text='Obital Strike Sound', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef = ax2.CreateType('DustOffMapSupportWeapon', standalone=True)
    typeDef.AddMember('TypeReference mOffMapSupportType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustOffMapSupportBase', text='The type of offmap support of current weapon', group=GROUPS.Content, caption='Offmap Support Type')



def PopulateCollisionPhysMeterial(ax2):
    typeDef = ax2.CreateType('collisionPhysMeterialProperty', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Float mDamageThreshold', text="The vehicle won't take any damage unless than the damageThreshold", caption='Damage Threshold')
    typeDef.AddMember('Float mDamageAdjustConst', text='The const used to calculate CollsionDamage from collsionEnergy', caption='Damage Adjust Const')
    typeDef.AddMember('Float mStiffness', text='The stiffness of this material', caption='Stiffness')
    typeDef.AddMember('Float mMaterialDamageMultiplier=1.0', text='The material may decrease or amplify the damage', caption='Material Damage Affector')
    typeDef = ax2.CreateType('DustCollisionPhysMeterial', standalone=True)
    typeDef.AddMember('collisionPhysMeterialProperty mCollisionProp', caption='Collision Properties')



def PopulateMCC(ax2):
    typeDef = ax2.CreateType('MCCTurretInfo', standalone=False, group=GROUPS.Combat, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('String socketName', text='Where to attach the turret', caption='Turret Socket Name')
    typeDef.AddMember('TypeReference turretTypeName = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustMountable', text='The type of the default turret', caption='Turret Type Name')
    typeDef = ax2.CreateType('SmoothSpeedTransition', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float acceleration', caption='Acceleration')
    typeDef.AddMember('Float maxSpeed', caption='Max Speed')
    typeDef.AddMember('Float maxSpeedOverDist', caption='Max Speed Over Distance')
    typeDef.AddMember('Float currSpeed', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='transient', caption='Current Speed')
    typeDef.AddMember('Float dist2Go', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='transient', caption='Distance To Go')
    typeDef.AddMember('Bool canAccelerate', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='transient', caption='Can Accelerate')
    typeDef.AddMember('Bool needDeceleration', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), uemodifier='transient', caption='Need Deceleration')
    typeDef = ax2.CreateType('DustMCCProperty', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float capacitorEnergyLowLevelPercentage', text="The percentage of capacitor energy at which it's energy is deemed to be low", group=GROUPS.Logic, caption='Capacitor Low Energy Threshold')
    typeDef.AddMember('Float capacitorWarningMessagePercentage', text='The percentage of capacitor energy at which a warning level is generated', group=GROUPS.Logic, caption='Capacitor Warning Level Threshold')
    typeDef.AddMember('Float capacitorAlarmMessagePercentage', text='The percentage of capacitor energy at which the most urgent measures are taken', group=GROUPS.Logic, caption='Capacitor Alarm Level Threshold')
    typeDef.AddMember('Float capacitorExpandSpeed', text='The speed at which the capacitor expends energy', group=GROUPS.Logic, caption='Capacitor Expend Rate')
    typeDef.AddMember('Float chargeShieldRate = 50', text='Charge rate for the shield, values in per second', group=GROUPS.Logic, caption='Charge Shield Rate')
    typeDef.AddMember('Float chargeSuperWeaponRate = 50', text='Charge rate for the super weapon, values in per second', group=GROUPS.Logic, caption='Charge Super Weapon Rate')
    typeDef.AddMember('Float maxCapacitor = 1000', text='The max volume of capacitor the MCC can hold', group=GROUPS.Logic, caption='Max Capacitor')
    typeDef.AddMember('Float maxSuperWeapon = 1000', text='The max volume of super weapon energy the MCC can hold', group=GROUPS.Logic, caption='Max Super Weapon Energy')
    typeDef.AddMember('Float heightOffset', text='The height of the MCC relative to the map origin in the map info', group=GROUPS.Physics, caption='Height Offset')
    typeDef.AddMember('Float playerSpawnOuterRadius', text='Outer radius of the player spawn region', group=GROUPS.Logic, caption='Player Spawn Radius (Inner)')
    typeDef.AddMember('Float playerSpawnInnerRadius', text='Inner radius of the player spawn region', group=GROUPS.Logic, caption='Player Spawn Radius (Outer)')
    typeDef.AddMember('Float destinationUpdateRange', text='The distance to the next distination below which we will update the route', group=GROUPS.Physics, caption='Destination Update Range')
    typeDef.AddMember('Float decelerateAngleDeltaThreshold', group=GROUPS.Physics, caption='Decelerate AngleDelta Threshold')
    typeDef.AddMember('Float maxDirectionDeltaAngle', group=GROUPS.Physics, caption='Max Direction DeltaAngle')
    typeDef.AddMember('Float distThreshold', group=GROUPS.Physics, caption='Distance Threshold')
    typeDef.AddMember('Float zDistThreshold', group=GROUPS.Physics, caption='Z Distance Threshold')
    typeDef.AddMember('Float sharpAngle', group=GROUPS.Physics, caption='Sharp Angle')
    typeDef.AddMember('Float maxNaviPoint', group=GROUPS.Physics, caption='Max Number of Waypoints')
    typeDef.AddMember('Float targetEvaluationPeriod', group=GROUPS.Combat, caption='Target Evaluation Period')
    typeDef.AddMember('Float targetStickyTime', group=GROUPS.Combat, caption='Target Sticky Time')
    typeDef.AddMember('Float dockDistThreshold', group=GROUPS.Logic, caption='Dock Distance Threshold')
    typeDef.AddMember('Float shootRadius', group=GROUPS.Combat, caption='Fire Radius')
    typeDef.AddMember('SmoothSpeedTransition speedTransition')
    typeDef.AddMember('SmoothSpeedTransition turningTransition')
    typeDef.AddMember('MCCTurretInfo turrets', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef.AddMember('String cameraShakeTag', group=GROUPS.Content, caption='Camera Shake Tag', text='The tag of the camera shake anim to use when MCC is close to the ground')
    typeDef.AddMember('String explosionCameraActorTag', group=GROUPS.Content, caption='Explosion Camera Actor Tag', text='The tag of mcc explosion camera actor')
    typeDef = ax2.CreateType('DustMCCExplosionSettings', standalone=False, group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float mDeathExplosionLength = 21', group=GROUPS.Content, caption='Death Explosion Length(seconds)')
    typeDef.AddMember('Float mTimeToHideInExplosion = 6', group=GROUPS.Content, caption='Time(seconds) to Hide in Explosion')
    typeDef.AddMember('Float mTimeToExplosionStage', group=GROUPS.Content, caption='Time(seconds) To Explosion Stage', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef.AddMember('Float mDeathShieldEffectAppearDuration = 0.5', group=GROUPS.Content, caption='Death Shield Material Effect Appear Duration(seconds)')
    typeDef.AddMember('Float mDeathShieldEffectDissaptionDuration = 3.0', group=GROUPS.Content, caption='Death Shield Material Effect Dissaption Duration(seconds)')
    typeDef = ax2.CreateType('DustVehMCC', standalone=True)
    typeDef.AddMember('DustMCCProperty mMCCPropertyDefault', uemodifier='repnotify', modifyFlag=MODIFY_REMOVED, caption='Default MCC Properties')
    typeDef.AddMember('DustMCCProperty mMCCPropertyEvaluated', uemodifier='repnotify', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), modifyFlag=MODIFY_REMOVED, caption='Evaluated MCC Properties')
    typeDef.AddMember('DustMCCProperty mMCCProp', uemodifier='repnotify', caption='MCC Properties')
    typeDef.AddMember('CmdObjTargetProp mCmdObjTargetProp', text='the properties for commander objective target', group=GROUPS.Logic, caption='Commander Objective Target Properties')
    typeDef.AddMember('DustMCCExplosionSettings mExplosionSettings', group=GROUPS.Content, caption='Settings for Explosion')
    typeDef.AddMember('ContentReference mDeathExplosionCamAnim', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.EXPORTED), caption='Death Explosion Camera Anim')
    typeDef.AddMember('Float mDeathExplosionLength', group=GROUPS.Content, modifyFlag=MODIFY_REMOVED, caption='Death Explosion Length')
    typeDef.AddMember('Float mTimeToHideInExplosion', group=GROUPS.Content, modifyFlag=MODIFY_REMOVED, caption='Time to Hide in Explosion')



def PopulateOutpost(ax2):
    typeDef = ax2.CreateType('DustOutpostProperty', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float mDockZOffset', text='the MCC docked z offset relative to the location of the cluster', group=GROUPS.Logic, modifyFlag=MODIFY_REMOVED, caption='MCC Dock Z Offset')
    typeDef.AddMember('Float maxEnergy = 10000', text='The max energy when the outpost is fully charged', group=GROUPS.Logic, caption='Maximum Energy')
    typeDef.AddMember('Float energyReleasePerSecond = 20', text='The max speed(per second) when charging MCC', group=GROUPS.Logic, modifyFlag=MODIFY_REMOVED, caption='MCC Max Charging Speed(Per Second)')
    typeDef.AddMember('Float SecondsToChargeMaxEnergy = 420', text='The time(seconds) to charge full energy to MCC', group=GROUPS.Logic, caption='Time(Seconds) to Charge All Energy To MCC')
    typeDef.AddMember('Int powerSurgeDamage = 800', text='The damage of a power surge', group=GROUPS.Logic, caption='Power Surge Damage')
    typeDef.AddMember('Float powerSurgeDuration = 5.0', text='How much time(seconds) a power surge last', group=GROUPS.Logic, caption='Power Surge Duration(Seconds)')
    typeDef = ax2.CreateType('DustOutpost', standalone=True)
    typeDef.AddMember('DustOutpostProperty mOutpostProp', uemodifier='repnotify', caption='Outpost Properties')



def PopulateGameType(ax2):
    typeDef = ax2.CreateType('VehicleFactoryConfig', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('String mVehicleType', text='Vehicle Type', group=GROUPS.Content, caption='Vehicle Type')
    typeDef.AddMember('Float mTimeToRespawnAfterDestroyed', text='Time in seconds before respawning the vehicle after it is destroyed', group=GROUPS.Content, caption='Time To Respawn After Destroyed')
    typeDef = ax2.CreateType('DustGameProperty', standalone=False, group=GROUPS.Logic, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('TypeReference defaultPawnCA = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Character', text='the default type id of Caldari pawn', group=GROUPS.Content)
    typeDef.AddMember('TypeReference defaultPawnGA = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Character', text='the default type id of Gallente pawn', group=GROUPS.Content)
    typeDef.AddMember('TypeReference defaultPawnMM = -1', modifyFlag=MODIFY_REMOVED, allowedClasses='DustVIC_Character', text='removed due to misspelling', group=GROUPS.Content)
    typeDef.AddMember('TypeReference defaultPawnMN = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Character', text='the default type id of Minmatar pawn', group=GROUPS.Content)
    typeDef.AddMember('TypeReference defaultPawnAM = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Character', text='the default type id of Ammar pawn', group=GROUPS.Content)
    typeDef.AddMember('TypeReference defaultInstallationListCA', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Installation', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Caldari installations', group=GROUPS.Content, caption='Default CA Installation List')
    typeDef.AddMember('TypeReference defaultInstallationListGA', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Installation', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Gallente installations', group=GROUPS.Content, caption='Default GA Installation List')
    typeDef.AddMember('TypeReference defaultInstallationListMN', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Installation', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Minmatar installations', group=GROUPS.Content, caption='Default MN Installation List')
    typeDef.AddMember('TypeReference defaultInstallationListAM', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Installation', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Ammar installations', group=GROUPS.Content, caption='Default AM Installation List')
    typeDef.AddMember('TypeReference defaultVehicleListCA', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Vehicle', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Caldari Vehicles', group=GROUPS.Content, caption='Default CA Vehicle List')
    typeDef.AddMember('TypeReference defaultVehicleListGA', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Vehicle', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Gallente Vehicles', group=GROUPS.Content, caption='Default GA Vehicle List')
    typeDef.AddMember('TypeReference defaultVehicleListMN', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Vehicle', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Minmatar Vehicles', group=GROUPS.Content, caption='Default MN Vehicle List')
    typeDef.AddMember('TypeReference defaultVehicleListAM', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Vehicle', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the default type list of Ammar Vehicles', group=GROUPS.Content, caption='Default AM Vehicle List')
    typeDef.AddMember('VehicleFactoryConfig vehicleFactoryConfigList', modifyFlag=MODIFY_TYPE_CHANGED, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), text='the config list of Vehicle Factories', group=GROUPS.Content, caption='Vehicle Factory Config List')
    typeDef.AddMember('Int minPlayersPerTeam', text='Minimum number of players per team required before a match can be started', caption='Min Players Per Team')
    typeDef.AddMember('Bool teamBalance', text='Whether team balancing is enabled', caption='Team Balance')
    typeDef.AddMember('Bool autoReset', text='Whether the game is auto reset after each round', caption='Auto Match Reset')
    typeDef.AddMember('Int playerSpawnTime', text='How long does it take the system to spawn in a player after he/she pushes the spawn button', modifyFlag=MODIFY_REMOVED, caption='Spawn Time')
    typeDef.AddMember('Float friendlyFireScale', text='Scale applied to friendly fire damage', caption='Friendly Fire Scale')
    typeDef.AddMember('Float teamAbilityDifference', text="Maximum percentage difference on the team score before it's considered unbalanced", caption='Max Team Score Difference')
    typeDef.AddMember('Float teamNumberDifference', text="Maximum percentage difference on the team player number before it's considered unbalanced", caption='Max Player Number Difference')
    typeDef.AddMember('Int restartWait', text='How many seconds to wait before the game is restarted', caption='Time To Restart')
    typeDef.AddMember('Int commanderVotingDuration', text='How many seconds in voting commander state', caption='Commander Voting Duration')
    typeDef.AddMember('Int timeLimit', text='How many minutes for a round', caption='Match Time Limit')
    typeDef.AddMember('Int stageTransitionTime = 15', text='Time for a full stage transition(in seconds)', caption='Stage Transition Time')
    typeDef.AddMember('Int stageTime', text='How many bonus minutes for a stage, if 0 reset game time with Match Time Limit', caption='Stage Time')
    typeDef.AddMember('Int captureObjectiveBonusTime', text='How many bonus minutes for capture a secondary game objective', caption='Objective Bonus Time')
    typeDef.AddMember('Int forceCompositionTime', text='How many seconds in PMD force composition phase', caption='Force Composition Duration')
    typeDef.AddMember('Int selectForceSpawnPresetTime', text='How many seconds in preset selection')
    typeDef.AddMember('Int capacitorPlacementTime', text='How many seconds in capacitor placement', modifyFlag=MODIFY_REMOVED, caption='Capacitor Placement Time Limit')
    typeDef.AddMember('Int supplyDepotPlacementTime', text='How many seconds in supply depot placement', modifyFlag=MODIFY_REMOVED, caption='Supply Depot Placement Time Limit')
    typeDef.AddMember('Int mccPlacementTime', text='How many seconds in mcc placement', modifyFlag=MODIFY_REMOVED, caption='MCC Placement Time Limit')
    typeDef.AddMember('Int pmdRequiredCapacitor', text='How many capacitors required in PMD', caption='Num. Required Capacitors')
    typeDef.AddMember('Int pmdRequiredSupplyDepot', text='How many supply depot required in PMD', caption='Num. Required Supply Depot')
    typeDef.AddMember('Int infantryDefaultWP', text='The default war point for infantry', caption='Infantry Default WP')
    typeDef.AddMember('Int commanderDefaultWP', text='The default war point for commander', caption='Commander Default WP')
    typeDef.AddMember('Int squadMax = 4', text='Max number of squad that a team can own', caption='Max Num of Squad')
    typeDef.AddMember('Int squadCharacterMin = 3', text='Min number of character that a squad can own', caption='Min Num of Squad Character')
    typeDef.AddMember('Int squadCharacterMax = 7', text='Max number of character that a squad can own', caption='Max Num of Squad Character')
    typeDef.AddMember('Int squadLeaderDefaultWP', text='The default war point for squad leader', caption='Squad Leader Default WP')
    typeDef.AddMember('Int squadVehicleMax', text='Max number of vehicle that a squad can own', caption='Max Num of Squad Vehicles')
    typeDef.AddMember('String commandPitLevelName', text='The name of the command pit level to use', group=GROUPS.Content, caption='Command Pit Level Name')
    typeDef.AddMember('Float globalRespawnTime = 20', text='The global timer for periodically respawn objects', caption='Global Respawn Time(Seconds)')
    typeDef.AddMember('Float respawnTimeVehicle = 5', text='The player will respawn after the time when he confirms respawning on the vehicle', caption='Player Respawn Time(Seconds) on Vehicle(Non-positive = using global timer)')
    typeDef.AddMember('Float respawnTimeSquad = 10', text='The player will respawn after the time when he confirms respawning to the squad', caption='Player Respawn Time(Seconds) to Squad(Non-positive = using global timer)')
    typeDef.AddMember('Float respawnTimeInstallation = -1', text='The player will respawn after the time when he confirms respawning on the Installation', caption='Player Respawn Time(Seconds) on Installation(Non-positive = using global timer)')
    typeDef.AddMember('Float respawnTimeMCC = -1', text='The player will respawn after the time when he confirms respawning to the MCC', caption='Player Respawn Time(Seconds) to MCC(Non-positive = using global timer)')
    typeDef.AddMember('Float respawnTimeObjective = -1', text='The player will respawn after the time when he confirms respawning near the game objective', caption='Player Respawn Time(Seconds) near the game objective(Non-positive = using global timer)')
    typeDef.AddMember('Float respawnTimeAI = 0.1', text='The player will respawn after the time when he confirms respawning on the AI spawn point', caption='Player Respawn Time(Seconds) on AI Spawn Point(Non-positive = using global timer)')
    typeDef.AddMember('Int autoRDVWait = 5', text='How many seconds to wait before the auto RDV sequence starts', caption='AutoRDV Time')
    typeDef.AddMember('Int activeRDVLimit = 2', text='Number of simultaneously active RDVs per team', caption='Active RDV Limit')
    typeDef.AddMember('Bool useThirdPersonCameraByDefault = False', text='Whether to use third-person camera by default', caption='Use third-person camera')
    typeDef.AddMember('Float playerLiveTimeOutOfPlayableArea = 10.0', text='If the player is out of any playable area, he will die after this time(seconds)', caption='Player Live Time when out of playable area')
    typeDef.AddMember('Int cloneReservesForAttacker = 20', text='How many Clone Reservers does the attacker team have, 0 means infinite', caption='Clone Reserves For Attackers')
    typeDef.AddMember('Int cloneReservesForDefender = 20', text='How many Clone Reservers does the defender team have, 0 means infinite', caption='Clone Reserves For Defenders')
    typeDef.AddMember('Int cloneReserveBonusForAttacker = 5', text='How many Clone Reservers Bonus does the attacker team have after a stage is finished, if 0 reset with cloneReservesForAttacker', caption='Clone Reserve Bonus For Attackers')
    typeDef.AddMember('Int cloneReserveBonusForDefender = 5', text='How many Clone Reservers Bonus does the defender team have after a stage is finished, if 0 reset with cloneReservesForDefender', caption='Clone Reserve Bonus For Defenders')
    typeDef.AddMember('Float commanderWPCommission', modifyFlag=MODIFY_REMOVED, text='The percentage of WP earned by all the team members that goes to the commander', caption='Commander WP Commission')
    typeDef.AddMember('Float squadLeaderWPCommission', modifyFlag=MODIFY_REMOVED, text='The percentage of WP earned by all the squad members that goes to the squad leader', caption='Squad Leader WP Commission')
    typeDef = ax2.CreateType('DustGameTypeObjectiveProperty', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float mMaxTimeBeforeOwnerRevertsToParent = 600', text='Time in seconds before a child objective reverts ownership back to the parent owner', group=GROUPS.Content, caption='Max Time(Seconds) Before Ownership Reverts To Parent Owner')
    typeDef = ax2.CreateType('DustGameType', standalone=True)
    typeDef.AddMember('DustGameProperty mGamePropertyDefault', modifyFlag=MODIFY_REMOVED, caption='Default Game Type Properties')
    typeDef.AddMember('DustGameProperty mGameProp', caption='Game Type Properties')
    typeDef.AddMember('DustGameTypeObjectiveProperty mGameObjectiveProp', group=GROUPS.Content, caption='Game Type Specific Objective Properties')



def PopulateDebugStuff(ax2):
    typeDef = ax2.CreateType('EDebugEnum', Enumerate, forUE3=False)
    typeDef.AddElement('DE_One')
    typeDef.AddElement('DE_Two')
    typeDef.AddElement('DE_Three')
    typeDef = ax2.CreateType('DebugProperty', standalone=False, forUE3=False)
    typeDef.AddMember('String attStr = this is a debug string')
    typeDef.AddMember('String attStrMultiline = this is a debug multiline string', editorFlag=EDITORFLAG_MULTILINE)
    typeDef.AddMember('Int attInt = 123')
    typeDef.AddMember('Float attFloat = 109.37')
    typeDef.AddMember('Bool attBool = False')
    typeDef.AddMember('EDebugEnum attEnum = DE_Two')
    typeDef.AddMember('String arrayStr', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef.AddMember('String arrayStrMultiline', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), editorFlag=EDITORFLAG_MULTILINE)
    typeDef.AddMember('Int arrayInt', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef.AddMember('Float arrayFloat', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef.AddMember('Bool arrayBool', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef = ax2.CreateType('DebugClass', standalone=True, forUE3=False)
    typeDef.AddMember('DebugProperty mDebugProperty', caption='Debug Properties')
    typeDef.AddMember('DebugProperty mArrayProperty', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Array Properties')



def PopulateConsoleCommand(ax2):
    typeDef = ax2.CreateType('ConsoleCommand', standalone=True)
    typeDef.AddMember('String mCommands', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Console Commands')



def PopulateTurret(ax2):
    typeDef = ax2.CreateType('DustMountableEntity', standalone=True)
    typeDef.AddMember('TypeReference mBaseType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Installation+InstallationContent', text='if this mountable entity is used as installation component, which base to use for it', group=GROUPS.Content, caption='Base Type')
    typeDef = ax2.CreateType('DustTurretProp', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float yawDPS', text='Rotation speed on yaw, degree per second', group=GROUPS.Physics, caption='Yaw DPS')
    typeDef.AddMember('Float pitchDPS', text='Rotation speed on pitch, degree per second', group=GROUPS.Physics, caption='Pitch DPS')
    typeDef.AddMember('Bool limitYaw', text='Whether to limit the rotation on yaw', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Limit Yaw')
    typeDef.AddMember('Bool limitPitch', text='Whether to limit the rotation on pitch', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Limit Pitch')
    typeDef.AddMember('Float pitchMin', text='The min value of pitch rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Min Pitch')
    typeDef.AddMember('Float pitchMAX', text='The max value of pitch rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Max Pitch')
    typeDef.AddMember('Float yawMin', text='The min value of yaw rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Min Yaw')
    typeDef.AddMember('Float yawMax', text='The max value of yaw rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Max Yaw')
    typeDef.AddMember('String pitchControllerName', text='The name of the skeletal control for the pitch', group=GROUPS.Physics, caption='Pitch Controller Name')
    typeDef.AddMember('String yawControllerName', text='The name of the skeletal control for the yaw', group=GROUPS.Physics, caption='Yaw Controller Name')
    typeDef.AddMember('DamageProtection protection', group=GROUPS.Combat, caption='Damage Protection')
    typeDef.AddMember('Bool takeDamage', group=GROUPS.Combat, caption='Take Damage')
    typeDef.AddMember('Float targetEvaluationPeriod', group=GROUPS.Combat, caption='Target Evaluation Period')
    typeDef.AddMember('Float targetZoneRadius', group=GROUPS.Combat, caption='Target Zone Radius')
    typeDef.AddMember('Bool selfControlled', group=GROUPS.Combat, caption='Self-Controlled')
    typeDef.AddMember('String traceStartSocketName', group=GROUPS.Combat, caption='TraceStart Socket Name')
    typeDef.AddMember('Float baseResponseTime', modifyFlag=MODIFY_REMOVED, group=GROUPS.Combat, caption='Base Response Time')
    typeDef = ax2.CreateType('DustTurretWeapon', standalone=False, forUE3=False)
    typeDef = ax2.CreateType('TurretBarrelInfo', standalone=False, group=GROUPS.Combat, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('DustTurretWeapon weapon', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='this is the first weapon')
    typeDef.AddMember('TypeReference weaponType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustWeapon')
    typeDef.AddMember('Name barrelStartSocketName', text='Name of the socket marked the start of the barrel, used for aiming', caption='BarrelStart Socket Name')
    typeDef.AddMember('Name barrelPivotPointName', text='Name of the socket at which the barrel pitches, used for aiming', caption='Barrel Pivot Point Name')
    typeDef.AddMember('Vector aimDir', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), text='Direction of the current aiming for this barrel', caption='Aim Direction')
    typeDef.AddMember('Vector pivotLocation', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), text='Location of the pivot point, recalculated each frame and cached', caption='Pivot Location')
    typeDef.AddMember('Vector fireStartLocation', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), text='Location of the fire start point, recalculated each frame and cached', caption='Fire Start Location')
    typeDef.AddMember('Vector hitLocation', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), text='The hit location, used to init effects, etc', caption='Hit Location')
    typeDef.AddMember('String weaponFireEventTag', modifyFlag=MODIFY_REMOVED, text='Event tag used to trigger effects on client', caption='Weapon Fire Event Tag')
    typeDef.AddMember('Bool firingConstrainedByAimDir', modifyFlag=MODIFY_REMOVED, text='Whether the vector from the target to the pivot point must be aligned with the aim dir before the barrel can fire', caption='Firing Constrained By Aim Direction')
    typeDef.AddMember('Float maxTargetAlignAngle', text='In degrees', caption='Max Target Align Angle')
    typeDef.AddMember('Float maxTargetAlignCosValue', attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), text='This value is cached', caption='Max Target Align Cos Value')
    typeDef = ax2.CreateType('DustTurret', standalone=True)
    typeDef.AddMember('DustTurretProp mTurretProp')
    typeDef.AddMember('TurretBarrelInfo mBarrels', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Barrel Info')



def PopulateStaticInfo(ax2):
    typeDef = ax2.CreateType('DustStaticInfo', standalone=True)
    typeDef.AddMember('TypeReference mInstallationTypes', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Installation', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Installation Types')
    typeDef.AddMember('TypeReference mVehicleTypes', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Vehicle', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Vehicle Types')
    typeDef.AddMember('TypeReference mMCCTypes', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVehMCC', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='MCC Types')
    typeDef = ax2.CreateType('NceVehiclePidController', standalone=False, group=GROUPS.Physics)
    typeDef.AddMember('Float m_fPitchP = 50', text='PID pitch proportional value')
    typeDef.AddMember('Float m_fPitchD = 800', text='PID pitch derivative value')
    typeDef.AddMember('Float m_fRollP = 50', text='PID roll proportional value')
    typeDef.AddMember('Float m_fRollD = 800', text='PID roll derivative value')
    typeDef.AddMember('Float m_fReturnToRestRate = 0.2', text='PID return to rest slerp rate')
    typeDef.AddMember('Float m_fMoveToRestRate = 0.1', text='PID move to rest slerp rate')



def PopulateRaceTraits(ax2):
    typeDef = ax2.CreateType('DustRaceTraits', standalone=True)
    typeDef.AddMember('TypeReference mPawnType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Character', caption='Pawn Type')
    typeDef.AddMember('TypeReference mMCCType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVehMCC', caption='MCC Type')
    typeDef.AddMember('TypeReference m_RDVType = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Vehicle', uemodifier='private', caption='RDV Type')
    typeDef.AddMember('TypeReference mInstallationTypes = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Installation', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Installation Types')
    typeDef.AddMember('TypeReference mVehicleTypes = -1', modifyFlag=MODIFY_TYPE_CHANGED, allowedClasses='DustVIC_Vehicle', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), caption='Vehicle Types')



def PopulateNceVehicleSimBase(ax2):
    typeDef = ax2.CreateType('NceVehicleSimBaseProperty', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float wheelSuspensionStiffness', caption='Wheel Suspension Stiffness', range=(0.0, None))
    typeDef.AddMember('Float wheelSuspensionDamping', caption='Wheel Suspension Damping', range=(0.0, None))
    typeDef.AddMember('Float wheelSuspensionBias', caption='Wheel Suspension Bias')
    typeDef.AddMember('Float wheelLongExtremumSlip', caption='Wheel Long Extremum Slip', range=(0.0, None))
    typeDef.AddMember('Float wheelLongExtremumValue', caption='Wheel Long Extremum Value', range=(0.0, None))
    typeDef.AddMember('Float wheelLongAsymptoteSlip', caption='Wheel Long Asymptote Slip', range=(0.0, None))
    typeDef.AddMember('Float wheelLongAsymptoteValue', caption='Wheel Long Asymptote Value', range=(0.0, None))
    typeDef.AddMember('Float wheelLatExtremumSlip', caption='Wheel Lat Extremum Slip', range=(0.0, None))
    typeDef.AddMember('Float wheelLatExtremumValue', caption='Wheel Lat Extremum Value', range=(0.0, None))
    typeDef.AddMember('Float wheelLatAsymptoteSlip', caption='Wheel Lat Asymptote Slip', range=(0.0, None))
    typeDef.AddMember('Float wheelLatAsymptoteValue', caption='Wheel Lat Asymptote Value', range=(0.0, None))
    typeDef.AddMember('Float wheelInertia', caption='Wheel Inertia', range=(0.0, None))
    typeDef.AddMember('Bool wheelSpeedOverride', caption='Wheel Speed Override')
    typeDef.AddMember('Bool clampedFrictionModel', caption='Clamped Friction Model')
    typeDef.AddMember('Float stopBrakeTorque', text="Applied to the vehicle when it's not being driven, to force a stop", caption='Stop Brake Torque', range=(0.0, None))
    typeDef.AddMember('Float autoBrakeFactor', text='The fraction of brake to apply when the player is giving any throttle to the car', caption='Auto Brake Factor', range=(0.0, None))
    typeDef = ax2.CreateType('NceVehicleSimBase', standalone=True)
    typeDef.AddMember('NceVehicleSimBaseProperty m_SimBaseProp', uemodifier='repnotify', caption='Vehicle Sim Base Properties')
    typeDef.AddMember('InterpCurveFloat m_EngineRPMCurve', modifyFlag=MODIFY_REMOVED, text='Translates forward velocity into an EngineRPM that can be used for effects and sounds', uemodifier='norep', group=GROUPS.Physics, caption='Engine RPM Curve')
    typeDef.AddMember('CurveReference m_EngineRPMCurveNce', text='Translates forward velocity into an EngineRPM that can be used for effects and sounds', uemodifier='norep', group=GROUPS.Physics, caption='Engine RPM Curve')
    typeDef.AddMember('String mUE3Class', text='The UE3 object class used to create this sim object', group=GROUPS.Physics, caption='UE3 Class')
    typeDef.AddMember('CurveReference m_SteeringInputCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Steering Input Curve')
    typeDef.AddMember('CurveReference m_ThrottleInputCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Throttle Input Curve')



def PopulateNceVehicleSimWheeled(ax2):
    typeDef = ax2.CreateType('NceVehicleSimWheeledProperty', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float chassisTorqueScale', text='How much torque to apply to chassis based on acceleration', caption='Chassis Torque Scale', range=(0.0, None))
    typeDef.AddMember('Float reverseThrottle', text='How much throttle when in reverse', caption='Reverse Throttle', range=(None, 0.0))
    typeDef.AddMember('Float stopThreshold', text='Speed at which the vehicle will stop simulating', caption='Stop Threshold', range=(0.0, None))
    typeDef.AddMember('Float jumpDamping', text='Extra downward force when flying in sky', caption='Jump Damping', range=(0.0, None))
    typeDef.AddMember('Float lsdFactor', text='Limited slip differential: 0.60 would mean 60% of the power is routed through the LSD and 40% is divided evenly', caption='LSD Factor', range=(0.0, 1.0))
    typeDef.AddMember('Float steeringReductionFactor', text='Steering reduction factor when have wheels in air (to make vehicles easier to control)', caption='Steering Reduction Factor', range=(0.0, 1.0))
    typeDef.AddMember('Float steeringReductionRampUpRate', text='Steering reduction ramp up rate (1/this = time to full steering reduction).  ramps down at half this rate', caption='Steering Reduction Ramp Up Rate', range=(0.0, None))
    typeDef.AddMember('Int numWheelsForFullSteering', text='How many wheels must be on ground in order to avoid steering reduction', caption='Num Wheels For Full Steering', range=(0, None))
    typeDef.AddMember('Float steeringReductionSpeed', text='Speed at which steering reduction is in full effect', caption='Steering ReductionSpeed', range=(0.0, None))
    typeDef.AddMember('Float steeringReductionMinSpeed', text='Speed at which steering reduction starts', caption='Steering Reduction Min Speed', range=(0.0, None))
    typeDef.AddMember('Float minHardTurnSpeed', text='Minimum speed before torque reduction sets in when turning hard', caption='Min Hard Turn Speed', range=(0.0, None))
    typeDef.AddMember('Float hardTurnMotorTorque', text="Motor torque applied during hard turns (don't want to accelerate through hard turns", caption='Hard Turn Motor Torque', range=(0.0, None))
    typeDef.AddMember('Bool autoHandbrake', text='Whether should auto-handbrake when wheels on one side are off the ground', caption='Auto Handbrake')
    typeDef.AddMember('Float consoleHardTurnGripFactor', text='When turning hard on console, reduce lateral grip to enhance sliding around', caption='Console Hard Turn Grip Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fBuoyancy', text='How buoyant the vehicle is', caption='Buoyancy', range=(0.0, None))
    typeDef.AddMember('Float m_fBuoyancyDamping', text='Additional damping to apply to the floating forces', caption='Buoyancy Damping', range=(0.0, None))
    typeDef.AddMember('Float m_fMaxFloatingThrust', text='Maximum forward thrust while moving on water', caption='Max Floating Thrust', range=(0.0, None))
    typeDef.AddMember('Float m_fMaxFloatingSteerAngle', text='Maximum angle to apply to thrust while moving on water', caption='Max Floating Steer Angle', range=(-180.0, 180.0))
    typeDef.AddMember('Float m_fFloatingAngularDampingFactor', text='Amount of damping to apply to vehicle angular velocity when floating on water', caption='Floating Angular Damping Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fWheelspinThreshold', text='Unit percentage threshold between wheelspin and braking', caption='Wheelspin Threshold', range=(0.0, None))
    typeDef.AddMember('Float m_fTorqueSplit', text='Unit percentage division of torque between front (1.0) and rear drive (0.0)', caption='Torque Split', range=(0.0, 1.0))
    typeDef = ax2.CreateType('NceVehicleSimWheeled', standalone=True)
    typeDef.AddMember('NceVehicleSimWheeledProperty m_SimWheeledProp', uemodifier='repnotify', caption='Vehicle Sim Wheeled Properties')
    typeDef.AddMember('InterpCurveFloat m_MaxSteerAngleCurve', modifyFlag=MODIFY_REMOVED, text='Degrees based on velocity', uemodifier='norep', group=GROUPS.Physics, caption='Max Steer Angle Curve')
    typeDef.AddMember('InterpCurveFloat m_MaxSteerSpeedCurve', modifyFlag=MODIFY_REMOVED, text='Degrees per second based on velocity', uemodifier='norep', group=GROUPS.Physics, caption='Max Steer Speed Curve')
    typeDef.AddMember('InterpCurveFloat m_TorqueVsSpeedCurve', modifyFlag=MODIFY_REMOVED, text='Torque vs Speed curve: This curve approximates a transmission as opposed to actually simulating one as in SVehicleSimTransmission', uemodifier='norep', group=GROUPS.Physics, caption='Torque V Speed Curve')
    typeDef.AddMember('CurveReference m_MaxSteerAngleCurveNce', text='Degrees based on velocity', uemodifier='norep', group=GROUPS.Physics, caption='Max Steer Angle Curve')
    typeDef.AddMember('CurveReference m_MaxSteerSpeedCurveNce', text='Degrees per second based on velocity', uemodifier='norep', group=GROUPS.Physics, caption='Max Steer Speed Curve')
    typeDef.AddMember('CurveReference m_TorqueVsSpeedCurveNce', text='Torque vs Speed curve: This curve approximates a transmission as opposed to actually simulating one as in SVehicleSimTransmission', uemodifier='norep', group=GROUPS.Physics, caption='Torque V Speed Curve')
    typeDef.AddMember('CurveReference m_LongGripCruve', text='This is used for the longitudinal grip force versus slip ratio', uemodifier='norep', group=GROUPS.Physics, caption='Longitudinal Grip Cruve')
    typeDef.AddMember('CurveReference m_LatGripCurve', text='This is used for the lateral grip force versus slip ratio', uemodifier='norep', group=GROUPS.Physics, caption='Lateral Grip Cruve')
    typeDef.AddMember('CurveReference m_SlopeGripCurve', text='This is used to further reduce grip based on slope', uemodifier='norep', group=GROUPS.Physics, caption='Slope Grip Curve')



def PopulateNceVehicleSimHover(ax2):
    typeDef = ax2.CreateType('NceVehicleSimHoverProperty', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Bool m_bDisableWheelsWhenOff', text='Whether to disable the wheels when the vehicle is unoccupied', caption='Disable Wheels When Off')
    typeDef.AddMember('Bool m_bRepulsorCollisionEnabled', text="Used internally - shouldn't really be exposed", caption='Repulsor Collision Enabled')
    typeDef.AddMember('Float m_fInitialLiftForce', text='Lift force to apply when vehicle is entered', caption='Initial Lift Force', range=(0.0, None))
    typeDef.AddMember('Float m_fMaxThrustForce', text='Maximum amount of forward thrust', caption='Max Thrust Force', range=(0.0, None))
    typeDef.AddMember('Float m_fMaxReverseForce', text='Maximum amount of backward thrust', caption='Max Reverse Force', range=(0.0, None))
    typeDef.AddMember('Bool m_bAllowThrustControlInAir', text='Whether to retain thrust control while in the air', caption='Allow Thrust Control In Air')
    typeDef.AddMember('Bool m_bAllowSteeringControlInAir', text='Whether to retain steering control while in the air', caption='Allow Steering Control In Air')
    typeDef.AddMember('Bool m_bReverseInvertsSteeringYaw', text='Whether reversing inverts steering yaw', caption='Reverse Inverts Steering Yaw')
    typeDef.AddMember('Bool m_bReverseInvertsSteeringRoll', text='Whether reversing inverts steering roll', caption='Reverse Inverts Steering Roll')
    typeDef.AddMember('Float m_fSteeringLeanFactor', text='Multiplier for steering lean amount', caption='Steering Lean Factor', range=(0.0, 90.0))
    typeDef.AddMember('Float m_fMaxLeanAngle', text='Maximum angle of steering lean', caption='Max Lean Angle', range=(0.0, 90.0))
    typeDef.AddMember('Float m_fMaxLeanSpeed', text='Maximum rate of change of steering lean', caption='Max Lean Speed', range=(0.0, None))
    typeDef.AddMember('Float m_fSteeringYawFactor', text='Multiplier for steering yaw amount', caption='Steering Yaw Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fMaxUprightTorque', text='Maximum torque to apply to keep the vehicle upright', caption='Max Upright Torque', range=(0.0, None))
    typeDef.AddMember('Float m_fRollDampingFactor', text='Amount of damping to apply to vehicle roll', caption='Roll Damping Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fPitchDampingFactor', text='Amount of damping to apply to vehicle pitch', caption='Pitch Damping Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fYawDampingFactor', text='Amount of damping to apply to vehicle yaw', caption='Yaw Damping Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fXDragFactor', text='Amount of drag to apply to vehicle velocity in X-axis', caption='X Drag Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fYDragFactor', text='Amount of drag to apply to vehicle velocity in Y-axis', caption='Y Drag Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fZDragFactor', text='Amount of drag to apply to vehicle velocity in Z-axis', caption='Z Drag Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fMaxStationaryDragSpeed', text='Maximum speed at which to apply additional drag to hold the vehicle still', caption='Max Stationary Drag Speed', range=(0.0, None))
    typeDef.AddMember('Float m_fStationaryLinearDragFactor', text='Multiplier for linear drag to hold the vehicle still', caption='Stationary Linear Drag Factor', range=(0.0, None))
    typeDef.AddMember('Float m_fStationaryAngularDragFactor', text='Multiplier for angular drag to hold the vehicle still', caption='Stationary Angular Drag Factor', range=(0.0, None))
    typeDef.AddMember('Vector m_vWaterCheckOffset', text='Offset from vehicle origin at which to check for being above water', caption='Water Check Offset')
    typeDef.AddMember('Float m_fWaterCheckLength', text='Length of check for being above water', caption='Water Check Length', range=(0.0, None))
    typeDef.AddMember('Float m_fWaterForceStrength', text='Strength of force to apply to water', caption='Water Force Strength')
    typeDef.AddMember('Float m_fWaterForceRadius', text='Radius of force to apply to water', caption='Water Force Radius', range=(0.0, None))
    typeDef = ax2.CreateType('NceVehicleSimHover', standalone=True)
    typeDef.AddMember('NceVehicleSimHoverProperty m_SimHoverProp', uemodifier='repnotify', caption='Vehicle Sim Hover Properties')
    typeDef.AddMember('InterpCurveFloat m_ThrustVsSpeedCurve', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='ThrustVsSpeedCurve Curve')
    typeDef.AddMember('CurveReference m_ThrustVsSpeedCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='ThrustVsSpeedCurve Curve')



def PopulateNceVehicleSimAir(ax2):
    typeDef = ax2.CreateType('NceVehicleSimAirProperty', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float m_fThrustIncreaseForce', text='Hover amount of thrust increase per second')
    typeDef.AddMember('Float m_fThrustExtraPush', text='Hover multipler for the horizontal thrust')
    typeDef.AddMember('Float m_fThrustMax', modifyFlag=MODIFY_REMOVED, text='Hover max thrust force')
    typeDef.AddMember('NceVehiclePidController m_HoverModeReturnToRest', uemodifier='repnotify', caption='Hover return to rest PID controller settings')
    typeDef.AddMember('NceVehiclePidController m_HoverModeMoveToRest', uemodifier='repnotify', caption='Hover move to rest PID controller settings', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('NceVehiclePidController m_CruiseReturnToRest', uemodifier='repnotify', caption='Cruise return to rest PID controller settings')
    typeDef.AddMember('NceVehiclePidController m_CruiseMoveToRest', uemodifier='repnotify', caption='Cruise move to rest PID controller settings', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fNeutralThrustBias = 1.0', text='The proportion of total calculated thrust applied to the vehicle', range=(0.0, None))
    typeDef.AddMember('Float m_fReturnToRestPitchP', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the rest pitch (PID proportional value)')
    typeDef.AddMember('Float m_fReturnToRestPitchD', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the rest pitch (PID derivative value)')
    typeDef.AddMember('Float m_fReturnToRestRollP', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the rest roll (PID proportional value)')
    typeDef.AddMember('Float m_fReturnToRestRollD', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the rest roll (PID derivative value)')
    typeDef.AddMember('Float m_fMoveToDesiredPitchP', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the desired pitch (PID proportional value)')
    typeDef.AddMember('Float m_fMoveToDesiredPitchD', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the desired pitch (PID derivative value)')
    typeDef.AddMember('Float m_fMoveToDesiredRollP', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the desired roll (PID proportional value)')
    typeDef.AddMember('Float m_fMoveToDesiredRollD', modifyFlag=MODIFY_REMOVED, text='Blend control for moving to the desired roll (PID derivative value)')
    typeDef.AddMember('Float m_fYawSteerTorque', text='Amount of steering torque', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fAirDragForce', text='Amount of drag force', range=(0.0, None))
    typeDef.AddMember('Float m_fAirDragTorque', text='Amount of drag torque', range=(0.0, None))
    typeDef.AddMember('Float m_fAltitudeLimit', text='')
    typeDef.AddMember('Float m_fAltitudeLimitRange', text='', range=(0.01, None))
    typeDef.AddMember('Float m_fHoverModePitchMax', text='', range=(0.0, None))
    typeDef.AddMember('Float m_fHoverModeRollMax', text='', range=(0.0, None))
    typeDef.AddMember('Float m_fCruiseModePitchMax', text='', range=(0.0, None))
    typeDef.AddMember('Float m_fCruiseModeRollMax', text='', range=(0.0, None))
    typeDef.AddMember('Float m_fCruiseBankedTurnYawTorqueMax', text='Cruise banked turn yaw force', range=(0.0, None))
    typeDef.AddMember('Float m_fCruisePitchTorque', text='Cruise pitch rotation speed', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fCruiseRollTorque', text='Cruise roll rotation speed', range=(0.0, None))
    typeDef.AddMember('Float m_fCruiseThrust', text='Cruise thrust', range=(0.0, None))
    typeDef.AddMember('Float m_fCruiseSwitchFlyingModeTimer', text='', range=(0.0, None))
    typeDef.AddMember('Float m_fCruiseNeutralFlyingSpeed', text='', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_HoverModeThrustAdjustmentMaxVerticalAirSpeed = 30', modifyFlag=MODIFY_REMOVED, text="vehicle's max vertical air speed in MPH")
    typeDef = ax2.CreateType('NceVehicleSimAir', standalone=True)
    typeDef.AddMember('NceVehicleSimAirProperty m_SimAirProp', uemodifier='repnotify', caption='Vehicle Sim Air Properties')
    typeDef.AddMember('CurveReference m_PitchFromRollCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Pitch from Roll Curve')
    typeDef.AddMember('CurveReference m_HoverModeThrustXFromPitchCurve', uemodifier='norep', caption='Hover mode thrust X from pitch curve')
    typeDef.AddMember('CurveReference m_HoverModeThrustXScaleFromSpeedCurve', uemodifier='norep', caption='Hover mode thrust X scale from speed curve')
    typeDef.AddMember('CurveReference m_HoverModeThrustYFromRollCurve', uemodifier='norep', caption='Hover mode thrust Y from roll curve')
    typeDef.AddMember('CurveReference m_HoverModeThrustYScaleFromSpeedCurve', uemodifier='norep', caption='Hover mode thrust Y scale from speed curve')
    typeDef.AddMember('CurveReference m_HoverModeYawForceFromInputCurve', uemodifier='norep', caption='Hover mode yaw force from input curve')
    typeDef.AddMember('CurveReference m_HoverModeYawForceScaleFromSpeedCurve', uemodifier='norep', caption='Hover mode yaw force scale from speed curve')
    typeDef.AddMember('CurveReference m_HoverModeThrustZScaleFromSpeedCurve', uemodifier='norep', caption='Hover mode thrust Z scale from speed curve')



def PopulateNceVehicleSimRDV(ax2):
    typeDef = ax2.CreateType('NceVehicleSimRDVProperty', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Vector m_EngineOffset', text='Local engine offset')
    typeDef.AddMember('Vector m_RearOffset', text='Rear (rudder) engine offset')
    typeDef.AddMember('Float m_fLiftStabiliserGain', text='Lift stabiliser gain')
    typeDef.AddMember('Float m_fDriveStabiliserHaltGain', text='Halt stabiliser gain')
    typeDef.AddMember('Float m_fDriveStabiliserTravelGain', text='Travel stabiliser gain')
    typeDef.AddMember('Float m_fLiftStabiliserMaxSpeed', text='Max effective lift stabilising speed')
    typeDef.AddMember('Float m_fDriveStabiliserMaxSpeed', text='Max effective drive stabilising speed')
    typeDef.AddMember('Float m_fLiftInputGain', text='Lift input gain')
    typeDef.AddMember('Float m_fFwdInputGain', text='Forward input gain')
    typeDef.AddMember('Float m_fSideInputGain', text='Side input gain')
    typeDef.AddMember('Float m_fYawInputGain', text='Yaw input gain')
    typeDef.AddMember('Float m_fHeightChangeAllowance', text='Allowance for height gain or drop due to pitch')
    typeDef.AddMember('Float m_fBoostGain', text='Boost gain')
    typeDef.AddMember('Float m_fFullBoostSpeed', text='Max effective boost speed')
    typeDef.AddMember('Float m_fAirResistanceGain', text='Air resistance gain')
    typeDef = ax2.CreateType('NceVehicleSimRDV', standalone=True)
    typeDef.AddMember('NceVehicleSimRDVProperty m_SimRDVProp', uemodifier='repnotify', caption='Vehicle Sim RDV Properties')



def PopulateNceVehicleSimTrack(ax2):
    typeDef = ax2.CreateType('NceVehicleSimTrackProperty', standalone=False, group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float m_fMaxTorque', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fSteeringZone', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fSpinRatio', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fTurnMaxGripReduction', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fTurnGripScaleRate', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fMaxSlopeAngle', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Int m_iMinWheelInContactForGrip', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fNoContactGrip', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fNoContactVel', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fMinWheelContactAngle', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fSpinTimerInterval', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fSpinChangeTolerance', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fSpinZoneMin', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fSpinZoneMax', modifyFlag=MODIFY_REMOVED, text='')
    typeDef.AddMember('Float m_fReverseTimerInterval', modifyFlag=MODIFY_REMOVED, text='Length of time before reverse controls settle back to forward controls')
    typeDef.AddMember('Float m_fReverseThreshold', modifyFlag=MODIFY_REMOVED, text='Reverse Control Threshold')
    typeDef.AddMember('Float m_fSlipThrottleReduction', text='Amount to reduce track speed by when slip detected', range=(0.0, 1.0))
    typeDef.AddMember('Float m_fSettleSteeringTime', text='Length of time before reverse controls settle back to forward controls', range=(0.0, None))
    typeDef.AddMember('Float m_fSettleThreshold', text='Control settling threshold', range=(0.0, None))
    typeDef.AddMember('Float m_fFlipSteeringTime', text='Time taken to smoothly transition between normal and reversed contorls', range=(0.01, None))
    typeDef.AddMember('Float m_fContactExaggeration', text='Exaggerate Wheel Contact Contribution', range=(0.0, None))
    typeDef.AddMember('Float m_fTorqueMultiplier', text='Torque multiplier', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fSteeringExaggeration', text='Steering Exaggeration', range=(0.0, None))
    typeDef.AddMember('Float m_fSteeringBufferAngle', text='Steering Buffer Angle', range=(0.0, 90.0))
    typeDef.AddMember('Float m_fTrackAnimSpeed', text='Track animation speed')
    typeDef.AddMember('Float m_fCannonRecoil', modifyFlag=MODIFY_REMOVED, text='Cannon recoil impulse magnitude')
    typeDef.AddMember('Float m_fFlipSteeringThreshold', text='Throttle required before steering controls are inverted', range=(0.0, None))
    typeDef.AddMember('Float m_fImpactThrottleAtten', text='Throttle attenuation due to impact with ground', range=(0.0, 1.0))
    typeDef = ax2.CreateType('NceVehicleSimTrack', standalone=True)
    typeDef.AddMember('NceVehicleSimTrackProperty m_SimTrackProp', uemodifier='repnotify', caption='Vehicle Sim Track Properties')
    typeDef.AddMember('InterpCurveFloat m_SteeringCurve', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Steering Curve')
    typeDef.AddMember('InterpCurveFloat m_AngularVelocityCurve', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Angular Velocity Curve')
    typeDef.AddMember('InterpCurveFloat m_DampeningCurve', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Dampening Curve')
    typeDef.AddMember('InterpCurveFloat m_GripReductionCurve', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Grip Reduction Curve')
    typeDef.AddMember('InterpCurveFloat m_TorqueReductionCurve', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Torque Reduction Curve')
    typeDef.AddMember('CurveReference m_SteeringCurveNce', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Steering Curve')
    typeDef.AddMember('CurveReference m_AngularVelocityCurveNce', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Angular Velocity Curve')
    typeDef.AddMember('CurveReference m_DampeningCurveNce', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Dampening Curve')
    typeDef.AddMember('CurveReference m_GripReductionCurveNce', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Grip Reduction Curve')
    typeDef.AddMember('CurveReference m_TorqueReductionCurveNce', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Torque Reduction Curve')
    typeDef.AddMember('CurveReference m_SlopeGripCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Grip on Slope Curve')
    typeDef.AddMember('CurveReference m_LatGripCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Per Wheel Lateral Grip Curve')
    typeDef.AddMember('CurveReference m_LongGripCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Per Wheel Longitudinal Grip Curve')
    typeDef.AddMember('CurveReference m_SteeringRatioCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Steering Speed Ratio Curve')
    typeDef.AddMember('CurveReference m_TrackTorqueCurveNce', uemodifier='norep', group=GROUPS.Physics, caption='Track Torque Curve')
    typeDef.AddMember('CurveReference m_SteeringInputCurveNce', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Steering Input Curve')
    typeDef.AddMember('CurveReference m_ThrottleInputCurveNce', modifyFlag=MODIFY_REMOVED, uemodifier='norep', group=GROUPS.Physics, caption='Throttle Input Curve')



def PopulateNceTurret(ax2):
    typeDef = ax2.CreateType('NceTurretProp', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Float m_fYawDPS', modifyFlag=MODIFY_REMOVED, text='Rotation speed on yaw, degree per second', group=GROUPS.Physics, caption='Yaw DPS')
    typeDef.AddMember('Float m_fPitchDPS', modifyFlag=MODIFY_REMOVED, text='Rotation speed on pitch, degree per second', group=GROUPS.Physics, caption='Pitch DPS')
    typeDef.AddMember('Bool m_bYawLimit', text='Whether to limit the rotation on yaw', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Limit Yaw')
    typeDef.AddMember('Bool m_bPitchLimit', text='Whether to limit the rotation on pitch', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Limit Pitch')
    typeDef.AddMember('Float m_fPitchMin', text='The min value of pitch rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Min Pitch')
    typeDef.AddMember('Float m_fPitchMax', text='The max value of pitch rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Max Pitch')
    typeDef.AddMember('Float m_fYawMin', text='The min value of yaw rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Min Yaw')
    typeDef.AddMember('Float m_fYawMax', text='The max value of yaw rotation', group=GROUPS.Physics, attributeFlag=(DEFAULT_ATTRIB_FLAGS ^ ATTRIB_FLAGS.PUBLISHED), caption='Max Yaw')
    typeDef.AddMember('String m_PitchControllerName', text='The name of the skeletal control for the pitch', group=GROUPS.Physics, caption='Pitch Controller Name')
    typeDef.AddMember('String m_YawControllerName', text='The name of the skeletal control for the yaw', group=GROUPS.Physics, caption='Yaw Controller Name')
    typeDef.AddMember('Bool m_bResetWhenUnoccupied = False', text='Whether to reset rotation when the turret is unoccupied', group=GROUPS.Physics, caption='Reset rotation when the turret is unoccupied')
    typeDef.AddMember('DamageProtection m_Protection', group=GROUPS.Combat, caption='Damage Protection')
    typeDef.AddMember('Bool m_bTakeDamage', group=GROUPS.Combat, caption='Take Damage', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fTargetEvaluationPeriod', group=GROUPS.Combat, caption='Target Evaluation Period', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fTargetZoneRadius', group=GROUPS.Combat, caption='Target Zone Radius', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Bool m_bSelfControlled', group=GROUPS.Combat, caption='Self-Controlled')
    typeDef.AddMember('Bool m_bUseLaserSight = false', group=GROUPS.Combat, caption='bUseLaserSight')
    typeDef.AddMember('String m_TraceStartSocketName', modifyFlag=MODIFY_REMOVED, group=GROUPS.Combat, caption='TraceStart Socket Name')
    typeDef.AddMember('Float m_fBaseResponseTime', group=GROUPS.Combat, caption='Base Response Time')
    typeDef = ax2.CreateType('NceTurretCameraProp', standalone=False, group=GROUPS.Content)
    typeDef.AddMember('Float m_fYawRotationMultiplier = 2.5', group=GROUPS.Content, caption='Yaw rotation multiplier', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fMaxYawRotationMultiplier = 5', group=GROUPS.Content, caption='Max yaw rotation multiplier', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fYawAccelRange = 0.8', group=GROUPS.Content, caption='Yaw accel range', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('Float m_fMaximumYawMultiplier = 7.0', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, caption='Max yaw rotation multiplier')
    typeDef.AddMember('Float m_fTimeToMaximumYawSpeed = 4.0', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, caption='Time to maximum yaw Speed')
    typeDef.AddMember('Float m_fYawMultiMaximumControllerDot = 0.3', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, caption='Yaw multi maximum controller dot')
    typeDef.AddMember('Bool  m_bLocalSpaceAiming = true', group=GROUPS.Content, caption='Local space aiming')
    typeDef.AddMember('Bool  m_bShowMeshInFirstPersonCamera = true', group=GROUPS.Content, caption='Show mesh in first person camera view')
    typeDef.AddMember('Float m_fTurretMeshFirstPersonFOV = 0.0', group=GROUPS.Content, caption='Turret mesh first person FOV ( 0 disabled )')
    typeDef.AddMember('Float m_fTurretMeshFirstPersonFOVZoomed = 0.0', group=GROUPS.Content, caption='Turret mesh first person FOV zoomed ( 0 disabled )')
    typeDef = ax2.CreateType('NceTurret', standalone=True)
    typeDef.AddMember('NceTurretProp m_TurretProp')
    typeDef.AddMember('TurretBarrelInfo m_aBarrels', attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET), group=GROUPS.Combat, caption='Barrel Info')
    typeDef.AddMember('NceTurretCameraProp m_TurretCameraProp', caption='Turret camera prop')
    typeDef.AddMember('CurveReference m_CameraYawCurve', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, uemodifier='norep', caption='Camera Yaw Curve')
    typeDef.AddMember('CurveReference m_CameraPitchCurve', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, uemodifier='norep', caption='Camera Pitch Curve')
    typeDef.AddMember('CurveReference m_CameraYawAccelCurve', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, uemodifier='norep', caption='Camera Yaw Accel Curve')
    typeDef.AddMember('CurveReference m_CameraPitchAccelCurve', modifyFlag=MODIFY_REMOVED, group=GROUPS.Content, uemodifier='norep', caption='Camera Pitch Accel Curve')
    typeDef.AddMember('DustVisionProperties m_VisionProperties', group=GROUPS.Combat, caption='Vision Properties')
    typeDef.AddMember('CameraControlInfo mCamCtrlParam', text='parameters for camera control', group=GROUPS.Content)



def PopulateHealingActor(ax2):
    typeDef = ax2.CreateType('DustHealingActor', standalone=True)
    typeDef.AddMember('Int defaultHealHealthRate = 12', text='Default Health heal rate, in points per second', group=GROUPS.Logic, caption='Default Health Heal Rate')
    typeDef.AddMember('Int defaultHealShieldRate = 12', text='Default Shield heal rate, in points per second', group=GROUPS.Logic, caption='Default Shield Heal Rate')
    typeDef.AddMember('Int defaultHealArmorRate = 12', text='Default Armor heal rate, in points per second', group=GROUPS.Logic, caption='Default Armor Heal Rate')



def PopulateGameObjective(ax2):
    typeDef = ax2.CreateType('DustGameObjectiveProp', standalone=False, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.NOT_NULL))
    typeDef.AddMember('Int mCapturingWPAward = 50', text='The player will earn this amount of WP if he capture the game objective', group=GROUPS.Content, caption='Awarded WP for capturing')
    typeDef.AddMember('Float mCommanderWPCommission = 0.2', text='The percentage of WP earned by all the team members that goes to the commander', group=GROUPS.Content, caption='Commander WP Commission')
    typeDef.AddMember('Float mMaxTimeBeforeOwnerRevertsToParent = 600', text='Max time(seconds) an objective can be held without capturing the parent', group=GROUPS.Content, caption='Max Time(Seconds) Before Ownership Reverts To Parent Owner', modifyFlag=MODIFY_REMOVED)
    typeDef.AddMember('WorldIcon worldIcon', text='The position adjust for 3D icon of game objectives', group=GROUPS.Content, caption='3DIcon')
    typeDef = ax2.CreateType('DustGameObjective', standalone=True)
    typeDef.AddMember('DustGameObjectiveProp mGameObjectiveProp', text='The DustGameObjective property', group=GROUPS.Content, caption='Property')
    typeDef.AddMember('CmdObjTargetProp mCmdObjTargetProp', text='the properties for commander objective target', group=GROUPS.Logic, caption='Commander Objective Target Properties')



def PopulateCommanderObjective(ax2):
    typeDef = ax2.CreateType('DustCommanderObjective', standalone=True)



def PopulateVehicleFactory(ax2):
    typeDef = ax2.CreateType('VehicleFactoryProp', standalone=True)
    typeDef.AddMember('Float mTimeToRespawnAfterDestroyed', text='Time To respawn the vehicle after it is destroyed', group=GROUPS.Logic, caption='Time To Respawn After Destroyed')



def PopulateBenchmarkTest(ax2):
    typeDef = ax2.CreateType('Benchmark', standalone=True)
    typeDef.AddMember('TypeReference mBenchmarkSteps', modifyFlag=MODIFY_TYPE_CHANGED, text='The steps in benchmark test', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef = ax2.CreateType('BenchmarkStepConsoleCommand', standalone=True)
    typeDef.AddMember('String mCommands', text='The commands that will be excuted', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef = ax2.CreateType('BenchmarkStepSpawnVehicles', standalone=True)
    typeDef.AddMember('TypeReference mVehicleTypes', modifyFlag=MODIFY_TYPE_CHANGED, text='The vehicles spawned in benchmark test', group=GROUPS.Content, attributeFlag=(DEFAULT_ATTRIB_FLAGS | ATTRIB_FLAGS.IS_SET))
    typeDef = ax2.CreateType('BenchmarkStepSpawnAIPlayers', standalone=True)
    typeDef.AddMember('Int mSpawnedAINumInOneSide', text='How many AI should we spawn in one side', group=GROUPS.Content, attributeFlag=DEFAULT_ATTRIB_FLAGS)



def PopulateSkills(ax2):
    typeDef = ax2.CreateType('Skill', standalone=True)
    typeDef.AddMember('Int skillPointCost', text='Number of skill points to purchase this skill', group=GROUPS.Logic)
    typeDef.AddMember('TypeReference previousLevel', text='This is the previous level of the same skill', allowedClasses='Skill', group=GROUPS.Logic)
    typeDef.AddMember('TypeReference prerequisite1', text='You must already know the given skill to learn this skill', allowedClasses='Skill', group=GROUPS.Logic)



def PopulateAll(ax2):
    PopulateUE3Basics(ax2)
    PopulateGeneric(ax2)
    PopulateModule(ax2)
    PopulateEntityAndAdapter(ax2)
    PopulatePawn(ax2)
    PopulateVIC(ax2)
    PopulateVIC_Vehicle(ax2)
    PopulateNceVehicleAir(ax2)
    PopulateVIC_Character(ax2)
    PopulateVIC_Installation(ax2)
    PopulateInstallationComponent(ax2)
    PopulateVehicleSimBase(ax2)
    PopulateVehicleSimCar(ax2)
    PopulateVehicleSimAir(ax2)
    PopulateVehicleSimAircraft(ax2)
    PopulateVehicleSimHover(ax2)
    PopulateVehicleSimTank(ax2)
    PopulateVehicleSimHeavyTank(ax2)
    PopulateWeapon(ax2)
    PopulateHandheldWeapon(ax2)
    PopulateMCC(ax2)
    PopulateProjectile(ax2)
    PopulateOutpost(ax2)
    PopulateOrbitalStrike(ax2)
    PopulateCollisionPhysMeterial(ax2)
    PopulateGameType(ax2)
    PopulateContent2(ax2)
    PopulateEnums(ax2)
    PopulateConsoleCommand(ax2)
    PopulateTurret(ax2)
    PopulateDebugStuff(ax2)
    PopulateStaticInfo(ax2)
    PopulateRaceTraits(ax2)
    PopulateNceVehicleSimBase(ax2)
    PopulateNceVehicleSimWheeled(ax2)
    PopulateNceVehicleSimHover(ax2)
    PopulateNceVehicleSimAir(ax2)
    PopulateNceVehicleSimRDV(ax2)
    PopulateNceVehicleSimTrack(ax2)
    PopulateNceVehicleSCV(ax2)
    PopulateNceTurret(ax2)
    PopulateHealingActor(ax2)
    PopulateGameObjective(ax2)
    PopulateCommanderObjective(ax2)
    PopulateBenchmarkTest(ax2)
    PopulateSkills(ax2)



